MS EF4:如何破译自引用表?

时间:2010-07-20 04:09:19

标签: entity-framework-4 self-reference

我有一个Product表,其中包含以下字段:

public class Product {
    public int ID {get;set;}
    ...
}

和一个将产品加入其他“交叉销售”产品(如项目)的表格:

public class CrossSell {
    public int ProductID {get;set;}
    public int CrossSellID {get;set;}
}

我的意图是,根据任何产品,获得交叉销售产品列表。

实体框架4(EF第二版)采用这些表并创建Product和Product1关系,其中连接表的行称为CrossSell。

我想要的是:

public class Product {
    public int ID {get;set;}
    ...
    public IList<Product> CrossSells {get;set;}
}

EF创造了这个:

public class Product {
    public int ID {get;set;}
    ...
    public IList<Product> Products {get;set;}
    public IList<Product> Products1 {get;set;}
}

我可以简单地删除名为Products1的第二个List,将第一个名称重命名为“CrossSells”并让所有这些神奇地起作用吗?我应该以不同方式重新制作SQL表,以便EF更好地理解我的意图吗?如果单个产品可以有多个交叉销售商品,这些SQL表会是什么样的?

编辑:

我真正想要的是一种在没有循环引用的情况下在EF中表示CrossSell项目的方法。现在,产品指的是其他产品,而这些产品反过来又指其他产品......

1 个答案:

答案 0 :(得分:2)

在模型浏览器中查找实体。找到Products1属性。点击它。在属性编辑器中重命名它。