3

我不确定我的措辞是否正确(这可能是我努力寻找结果的原因)。

这是我想要实现的目标:

我希望能够将相关产品(产品 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; }
}
4

2 回答 2

1

您可以按照定义的方式使用该属性,但您应该告诉 EF 它是多对多关联,例如:

entry.HasMany(p => p.RelatedProducts)
     .WithMany()
     .Map(m => m.MapLeftKey("ProductId")
                .MapRightKey("ProductIdReleated"));

现在 Ef 将创建一个带有两个 FK 的联结表Product。如果没有这个映射,它将创建一个Product带有自身 FK 的表,即1-n关联。

于 2013-07-29T07:44:23.650 回答
0

我猜你正在尝试做的事情类似于你在 amazon.com 上看到的内容,例如,如果你打开一本书,它会给你相关的书籍供你查阅。如果我猜对了,那么这是您尝试配置的多对多关系,因为每个产品都可能与许多其他产品相关,现在 Entity Framework Code First 通过约定支持多对多关系并创建一个连接表自动地。现在我还没有尝试过两个相关对象的类型相同(在你的情况下是“产品”),所以你必须检查这是否可行。附带说明一下,我认为这不是应该实现此功能的方式,我认为您必须使用某种数据挖掘技术,我会为此谷歌并看看专业人员如何实现此功能。

于 2013-02-22T00:28:38.077 回答