C# 向模型添加值';s列表<&燃气轮机;

C# 向模型添加值';s列表<&燃气轮机;,c#,linq,entity-framework,C#,Linq,Entity Framework,我正在尝试向列表中添加值。列表是“我的用户”模型中的一列。执行Add()函数时,会收到错误消息“用户代码未处理NullReferenceException”。我确信我试图修改的行存在。以下是我的代码示例: var user2 = from check in myfirstDB.Users where check.Name.Equals("stu") select check; user2.Single().discussionsIdList.Add(1); 以下是我的用户模型: public

我正在尝试向列表中添加值。列表是“我的用户”模型中的一列。执行Add()函数时,会收到错误消息“用户代码未处理NullReferenceException”。我确信我试图修改的行存在。以下是我的代码示例:

var user2 = from check in myfirstDB.Users where check.Name.Equals("stu") select check;
user2.Single().discussionsIdList.Add(1);
以下是我的用户模型:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string email { get; set; }
    public string password { get; set; }
    public int rank { get; set; }
    public List<int> discussionsIdList { get; set; }

}
公共类用户
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串电子邮件{get;set;}
公共字符串密码{get;set;}
公共整数秩{get;set;}
公共列表讨论IDList{get;set;}
}

提前感谢。

列表未初始化,导致空引用异常。您可以在构造函数中初始化它

public class User
{
    public User()
    {
        discussionsIdList = new List<int>();
    }
    public int Id { get; set; }
    public string Name { get; set; }
    public string email { get; set; }
    public string password { get; set; }
    public int rank { get; set; }
    public List<int> discussionsIdList { get; set; }

}
公共类用户
{
公共用户()
{
discussionsIdList=新列表();
}
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串电子邮件{get;set;}
公共字符串密码{get;set;}
公共整数秩{get;set;}
公共列表讨论IDList{get;set;}
}

列表未初始化,导致空引用异常。您可以在构造函数中初始化它

public class User
{
    public User()
    {
        discussionsIdList = new List<int>();
    }
    public int Id { get; set; }
    public string Name { get; set; }
    public string email { get; set; }
    public string password { get; set; }
    public int rank { get; set; }
    public List<int> discussionsIdList { get; set; }

}
公共类用户
{
公共用户()
{
discussionsIdList=新列表();
}
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串电子邮件{get;set;}
公共字符串密码{get;set;}
公共整数秩{get;set;}
公共列表讨论IDList{get;set;}
}
这个

为null,因此无法调用Add(…)

添加一个null检查,这将解决您的问题(假设null是此属性的有效值)

这个

为null,因此无法调用Add(…)

添加一个null检查,这将解决您的问题(假设null是此属性的有效值)


不是那一行引起了错误你有没有仔细检查过代码。。当您跨过
var user2
代码行时,
discussionIdList
的值是多少。。如果为空,则需要初始化列表。是否希望将此
列表
保存在数据库中?如果是这样,问题是:如何?事实上,SQL中没有数组列数据类型,并且该属性将被EF忽略。我已经读取了基本类型列表不能存储在数据库中的位置,但是模型对象列表可以,因此我修改了模型以存储完整对象列表,而不是对象Id。但是该列表仍然没有存储在数据库中,并且我仍然收到NullReferenceException错误。那么可能是是时候用新代码提出新问题了。但请记住,NRE是1。仅从代码片段很难诊断。2.易于通过调试发现。我很惊讶您似乎没有检查
discussionidlist
是否为空。这显然是罪魁祸首。如果一个新问题没有自己进行这种检查,那么它肯定会再次作为NRE问题的副本被记录下来。导致错误的不是那一行。你有没有仔细检查代码。。当您跨过
var user2
代码行时,
discussionIdList
的值是多少。。如果为空,则需要初始化列表。是否希望将此
列表
保存在数据库中?如果是这样,问题是:如何?事实上,SQL中没有数组列数据类型,并且该属性将被EF忽略。我已经读取了基本类型列表不能存储在数据库中的位置,但是模型对象列表可以,因此我修改了模型以存储完整对象列表,而不是对象Id。但是该列表仍然没有存储在数据库中,并且我仍然收到NullReferenceException错误。那么可能是是时候用新代码提出新问题了。但请记住,NRE是1。仅从代码片段很难诊断。2.易于通过调试发现。我很惊讶您似乎没有检查
discussionidlist
是否为空。这显然是罪魁祸首。如果一个新问题没有你自己的检查,那么它肯定会再次作为NRE问题的副本被记录下来。谢谢你的回复。我在构造函数中初始化了列表,错误消息消失了。但最终我希望列表作为一列存在于我的Users表中。初始化对象模型中的列表不允许存储列。我还将列表类型更改为完整的讨论对象,而不是int类型的讨论Id。我读取了基本列表类型无法存储在EF数据库中的位置。感谢您的回复。我在构造函数中初始化了列表,错误消息消失了。但最终我希望列表作为一列存在于我的Users表中。初始化对象模型中的列表不允许存储列。我还将列表类型更改为完整的讨论对象,而不是int类型的讨论Id。我读取了基本列表类型不能存储在EF数据库中的位置。
if(user2.Single().discussionsIdList != null)
    user2.Single().discussionsIdList.Add(1);