使EF使用具有附加属性的m:n表

时间:2016-10-13 11:21:21

标签: c# entity-framework ef-fluent-api

我在创建新应用时遇到了问题。该应用程序是关于在特定日期进入的新员工。由于他们需要一些硬件(如笔记本,键盘等),我们希望提供未来几天内将要出现的所有新员工的概述。

所以有以下型号:

项:

public class Entry{
public IEnumerable<Hardware> Hardware {get; set;}
...
}

设备:

public class Hardware{
    public string Name {get; set;}
    public OrderStatus Status {get; set}
}

OrderStatus:

public enum OrderStatus{
    Nothing,
    Ordered,
    Arrived,
    Ready
}

起初这看起来很好,因为对于每个条目我都想创建一个新的硬件数据集(一对多)。现在我决定维护一个硬件列表,并将硬件引用到条目中(多对多)。问题是OrderStatus绑定到硬件,因此当一个硬件被引用到许多Employees并且Orderstatus被更改时,它将在所有条目上被更改。

我认为正确的解决方案是使用第三个表(Entry_Id,Hardware_Id,OrderStatus)。使用流畅的API,可以在新(第三)表中映射关系,但是无法向其添加新属性(OrderStatus)。这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

根据answer

  

与a创建多对多关系是不可能的   定制连接表。在多对多关系中,EF管理着   在内部连接表并隐藏。这是一个没有Entity类的表   在你的模型中。使用附加的这种连接表   您必须创建两个一对多的属性   关系

有关详细信息,请参阅链接的答案。