模型包括对象列表
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);
我尝试构建一个包含多个属性和对象列表的模型,如下所示:
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);