用户对象未设置为对象的实例?

时间:2018-02-09 11:15:43

标签: c# database exception code-first

据我所知,这是一个非常经典的错误。我试图理解为什么会发生这种情况,但我不明白为什么它会在我的代码中发生.. 我有两个类,用户:

public class User
    {
        [Key]
        public string Username { get; set; }
        public string DisplayName { get; set; }
        public List<Organization> Organizations { get; set; }
    }

和组织:

public class Organization
    {
        public int OrganizationId { get; set; }
        public string OrganizationName { get; set; }
    }

在我的主程序中,我的目标是创建一个名称由用户提供的新组织。然后,我想从用户那里获得一个用户名。然后,应该将首先输入的组织添加到该用户。据我所知,我的main()正在处理一个对象的实例?主要看起来像这样:                 Console.Write(“输入组织名称:”);                 var orgName = Console.ReadLine();

            var org = new Organization{OrganizationName = orgName};
            db.Organizations.Add(org);
            db.SaveChanges();

            Console.WriteLine("Enter username: ");
            var userName = Console.ReadLine();
            var user = new User {Username = userName};
            user.Organizations.Add(org); //I get the exception on this line
            db.Users.Add(user);
            db.SaveChanges();

确切的例外是:“CodeFirstNewDatabaseSample.User.Organizations.get返回null。”

1 个答案:

答案 0 :(得分:3)

您需要将Organizations属性初始化为空列表:

public class User
{
    [Key]
    public string Username { get; set; }
    public string DisplayName { get; set; }
    public List<Organization> Organizations { get; set; } = new List<Organization>();
}

不推荐以下内容,因为它很容易产生您遇到的问题:
<击>或

<击>
var user = new User { Username = userName };
user.Organizations = new List<Organization>();
user.Organizations.Add(org);

<击>