我不确定我的措辞是否正确(这可能就是我努力寻找结果的原因)。
这就是我想要实现的目标:
我希望能够将相关产品(产品B,产品C)的集合添加到产品A.我希望当您查看产品B时,相关产品反映出来在A上添加了什么(如您所见,产品A和产品C)。 是否必须为“相关”关系设置单独的表格?我猜这是一种简单的方法。
public class Product
{
public int ProductId { get; set; }
public string DefinitionUri { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual ICollection<Product> RelatedProducts { get; set; }
}
答案 0 :(得分:0)
我猜你要做的事情与你在amazon.com上看到的相似,如果你打开一本书,它会给你相关的书籍。如果我猜对了,那么这是你要配置的多对多关系,因为每个产品都可能与许多其他产品相关,现在Entity Framework Code First通过约定支持多对多关系并创建一个连接表自动。现在我还没有尝试过两个相关对象的类型相同(在你的情况下是“产品”),所以你必须检查一下这是否有效。在旁注中,我认为这不是应该实现此功能的方式,我认为您必须使用某种数据挖掘技术,我会谷歌为此,并看看专业人士如何实现此功能。
答案 1 :(得分:0)
您可以按照您的定义使用该属性,但是您应该告诉EF它是多对多的关联,例如像这样:
entry.HasMany(p => p.RelatedProducts)
.WithMany()
.Map(m => m.MapLeftKey("ProductId")
.MapRightKey("ProductIdReleated"));
现在,Ef将创建一个包含两个FK到Product
的联结表。如果没有这种映射,它将创建一个Product
表,其中包含一个FK,即1-n
个关联。