3

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

我有两个对象模型 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: 'Object reference not set to an instance of an object。在 uinCollection.Insert(user) 上;

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

4

0 回答 0