gpt4 book ai didi

插入时的 LiteDB 空引用

转载 作者:行者123 更新时间:2023-12-05 07:39:53 27 4
gpt4 key购买 nike

我遇到了这个问题,在插入时出现空引用异常。

我有两个对象模型 UserInfo 和 UserConfig。在第一次试用时,UserConfig 引用了一个 UserInfo 实例

public class UserConfigObject : IUserConfig
{
BsonRef("userInfo")]
public IUserInfo UserInfo { get; set; }

public string AssignedJob { get; set; }

public string[] QueueItems { get; set; }

}

public class UserInfoObject : IUserInfo
{
[BsonId]
public int ID { get; set; }

public string Name { get; set; }
public string Username { get; set; }

public string IPAddress { get; set; }
}

以及将数据插入数据库的方法

public void AddUser(IUserConfig user)
{
var uconCollection = DatabaseInstance.GetCollection<IUserConfig>("userConfig");
var uinCollection = DatabaseInstance.GetCollection<IUserInfo>("userInfo");

uinCollection.Insert(user.UserInfo);
uconCollection.Insert(user);

}

此设置工作正常,但是当我尝试更改对 UserInfo 的引用时,引用 UserConfig

public class UserInfoObject : IUserInfo
{
[BsonId]
public int ID { get; set; }

public string Name { get; set; }
public string Username { get; set; }

public string IPAddress { get; set; }

[BsonRef("userConfig")]
public IUserConfig UserConfig { get; set; }
}


public class UserConfigObject : IUserConfig
{
[BsonRef("userInfo")]
public IUserInfo UserInfo { get; set; }

[BsonId(true)]
public int ConfigID { get; set; }

public string AssignedJob { get; set; }

public string[] QueueItems { get; set; }

}

用一个方法调用

public void AddUser(IUserInfo user)
{
var uconCollection = DatabaseInstance.GetCollection<IUserConfig>("userConfig");
var uinCollection = DatabaseInstance.GetCollection<IUserInfo>("userInfo");

uconCollection.Insert(user.UserConfig);
uinCollection.Insert(user);
}

它不再有效,它抛出 System.NullReferenceException:“对象引用未设置到对象的实例。”在 uinCollection.Insert(用户);

无论是 v3 还是 v4,它都不适用于后者的设置

最佳答案

有同样的问题,但与集合有关。我试过像这样保存邀请集:

using var db = new LiteRepository(_connectionString);

var invitations = new List<Invitation>
{
// populate list
};

db.Insert(invitations);

问题是 T参数解析为 IEnumerable<Invitation>不只是Invitation ,因此如果您要插入集合,请显式设置类型。

db.Insert<Invitation>(invitations);

关于插入时的 LiteDB 空引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46755006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com