插入时的LiteDB null引用

时间:2017-10-15 12:24:30

标签: litedb

我遇到了这个问题,在插件中我得到一个空引用异常。

我有两个对象模型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:'对象引用未设置为对象的实例。' on uinCollection.Insert(user);

v3或v4,它不适用于后者设置

0 个答案:

没有答案