[英]Entity Framework messes up my many-to-many self relation
我有一个产品表和一个BundleLink表,它们定义了哪个产品是另一个产品的捆绑产品。
public class Product
{
public int Id { get; set; }
public ICollection<BundleLink> MasterOf { get; set; }
public ICollection<BundleLink> BundleOf { get; set; }
}
public class BundleLink
{
public int Id { get; set; }
public Product Master { get; set; }
public Product Bundle { get; set; }
public int Quantity { get; set; }
}
因此,当我使用主产品时,我会看到捆绑在指什么产品,以及其他方向。
但是实体框架在BundleLink表的sql服务器中创建4列。 它为我定义的产品字段创建一个,再创建两个外键,其中每个外键每次都为null,这取决于我添加捆绑的方向。 如何为EF定义哪个BundeLink集合属于哪个产品?
我希望我的描述是可以理解的。 提前致谢。
在实体框架中,您需要遵循EF 6和EF Core中的数据注释-ForeignKey属性。
ForeignKey属性用于在EF 6和EF Core中的两个实体之间的关系中配置外键。 它会覆盖默认约定。 根据默认约定,当EF的名称与相关实体的主键属性匹配时,EF会将其作为外键属性。
详细信息: http : //www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspx
谢谢raghu
如何为EF定义哪个BundeLink集合属于哪个产品?
您有两种解决方案:
OnModelCreating
你的方法DbConext
用流利的配置,以便通过定义关系有助于EF知道哪些集合属于哪个。 InverseProperty
属性装饰您的收藏集。 因此,在你的收藏,你将有InversProperty("Master")
的MasterOf
收集和InversProperty("Bundle")
的BundleOf
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.