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

C# 使EF使用具有附加属性的m:n表,c#,entity-framework,ef-fluent-api,C#,Entity Framework,Ef Fluent Api,我在创建新应用程序时遇到问题。该应用程序是关于在特定日期输入的新员工的。由于他们需要一些硬件(如笔记本电脑、键盘等),我们想对未来几天即将到来的所有新员工进行概述 因此,有以下几种模式: 条目: public class Entry{ public IEnumerable<Hardware> Hardware {get; set;} ... } 订单状态: public enum OrderStatus{ Nothing, Ordered, Arrived,

我在创建新应用程序时遇到问题。该应用程序是关于在特定日期输入的新员工的。由于他们需要一些硬件(如笔记本电脑、键盘等),我们想对未来几天即将到来的所有新员工进行概述

因此,有以下几种模式:

条目:

public class Entry{
public IEnumerable<Hardware> Hardware {get; set;}
...
}
订单状态:

public enum OrderStatus{
    Nothing,
    Ordered,
    Arrived,
    Ready
}
起初,这似乎很好,因为对于每个条目,我都想创建一个新的硬件数据集(一对多)。现在我决定维护一个硬件列表,并将硬件引用到条目(多对多)。问题是OrderStatus绑定到硬件,因此当一个硬件被多个员工引用并且OrderStatus被更改时,所有条目上的OrderStatus都会更改

我认为正确的解决方案是使用第三个表(Entry\u Id、Hardware\u Id、OrderStatus)。使用fluent API,可以在新的(第三个)表中映射关系,但不能向其中添加新属性(OrderStatus)。这可能吗?

根据这一点:

与客户建立多对多关系是不可能的 自定义联接表。在多对多关系中,EF管理 内部和隐藏连接表。它是一个没有实体类的表 在你的模型中。使用这样的联接表时,需要使用其他 您必须实际创建两个一对多属性 关系


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

我认为您应该创建第三个实体EntryHardwareStatus(名称可能更好,但目前不相关),它与Entry和Hardware相关,还包含OrderStatus。仅仅用fluentapi映射
m:n
关系是不够的,所以除了创建一个新模型之外没有别的方法了?我不需要在该模型的上下文+新存储库中创建新属性吗?有没有办法用fluentapi解决这个问题呢?很好的回答,但是这个问题是重复的:)我今天没有旗子了:o
public enum OrderStatus{
    Nothing,
    Ordered,
    Arrived,
    Ready
}