【发布时间】:2014-10-15 11:23:08
【问题描述】:
我首先使用实体框架代码。这是我的 poco 课程:
public class BusinessPartner
{
[Key]
public int BusinessPartnerID { get; set; }
[Required]
[StringLength(255)]
public string Title { get; set; }
[StringLength(255)]
public string Address { get; set; }
public virtual ICollection<BusinessPartnerLanguage> BusinessPartnerLanguage { get; set; }
}
public class Language
{
[Key]
public int LanguageID { get; set; }
[Required]
[StringLength(255)]
public string Title { get; set; }
[Required]
public bool Active { get; set; }
public virtual ICollection<BusinessPartnerLanguage> BusinessPartnerLanguage { get; set; }
}
public class BusinessPartnerLanguage
{
[Key, Column(Order = 0)]
public int BusinessPartnerID { get; set; }
[Key, Column(Order = 1)]
public int LanguageID { get; set; }
[Required]
public bool Default { get; set; }
public virtual BusinessPartner BusinessPartner { get; set; }
public virtual Language Language { get; set; }
}
当我在控制器中创建新实体时,例如:
BusinessPartner bp = new BusinessPartner();
它的导航属性 - bp.BusinessPartnerLanguage 为空,
所以如果我做类似的事情:
bp.BusinessPartnerLanguage.Add(someEntity);
我得到空异常。我设法通过将虚拟 ICollection 属性更改为:
private ICollection<BusinessPartnerLanguage> _BusinessPartnerLanguage;
public virtual ICollection<BusinessPartnerLanguage> BusinessPartnerLanguage
{
get { return this._BusinessPartnerLanguage ?? (this._BusinessPartnerLanguage = new HashSet<BusinessPartnerLanguage>()); }
set { _BusinessPartnerLanguage = value; }
}
但我想知道为什么这不能正常工作,是否有更好的方法来解决这个问题。提前致谢。
【问题讨论】:
标签: c# entity-framework ef-code-first navigation-properties