模型包括对象列表

Model includes list of objects

我尝试构建一个包含多个属性和对象列表的模型,如下所示:

public class A
{
    public int ID { get; set; }
    public string AnyProperty { get; set; }
}

public class B
{
    public int ID { get; set; }
    public string Title { get; set; }
    public List<A> AList {get; set;}
}

问题是,在用于创建类型 A 对象的控制器中,我想创建一个新列表 "As" 并将其添加到类型 B 的(现有或新的)对象中。 所以我写:

db.Bs.Find(id).AList = new List<A> {a};

但是在 B 的详细信息视图中调用此列表后,它总是显示 NullReferenceException,因为 AList 仍然为空。 好像数据库不保护AList,我该怎么做才能保护列表?

必须将一对多关系声明为 virtual ICollection<>

public class B
{
    public int ID { get; set; }
    public string Title { get; set; }
    public virtual ICollection<A> AList {get; set;}
}

而且您不必实例化成员 AList。只需将其添加到您的 A 对象即可。

db.Bs.Find(id).AList.Add(a);