所以疯了3个小时后在网上到处寻找,我强迫自己在这里问。我已经使用实体框架超过5年了,我从未遇到过我在下面描述的那种问题
我有两个POCO课程(已编辑):
public class Company
{
public virtual ICollection<BusinessUnit> BusinessUnits { get; protected set; } = new List<BusinessUnit>();
public int Id { get; protected set; }
}
public class BusinessUnit
{
public virtual Company Company { get; protected set; } = new Company();
public int CompanyId { get; protected set; }
public string Description { get; protected set; }
}
在我的“BusinessUnit”配置中,我声明:
this
.HasRequired(c => c.Company)
.WithMany(c => c.BusinessUnits)
.HasForeignKey(c => c.CompanyId);
以下作品:
以下不起作用:
根据EF指南和我的经验,我正在做的事情是正确的:
我已尝试将属性设置器更改为公共,但仍无法解决问题
没有明显的理由行为不端。我显然遗漏了一些东西,但我无法弄清楚是什么。
使用的Framerowk版本是.Net 4.6上的6.1.3,通过NuGet包安装。
答案 0 :(得分:3)
问题似乎是由C#6的新https://regex101.com/r/dX7kU7/2功能引起的。
如果您初始化属性&#34;内联&#34;实体框架打破了一对多的关系。
删除初始化程序,导航属性应该再次起作用。
public class Company
{
public virtual ICollection<BusinessUnit> BusinessUnits { get; protected set; }
public int Id { get; protected set; }
}
public class BusinessUnit
{
public virtual Company Company { get; protected set; }
public int CompanyId { get; protected set; }
public string Description { get; protected set; }
}