通过 Entity Framework 6.1.3
使用 Code First 方法,我尝试基于 this post 创建和配置我自己的多对多表.我强烈同意他的观点:我不想遵循惯例,因为那会限制我的设计。
看多对多with payload Code First 中的类:
public class FooBar
{
[Key, Column(Order = 1)]
public virtual Foo Foo { get; set; }
[Key, Column(Order = 2)]
public virtual Bar Bar { get; set; }
//some more 'payload' properties
}
我想保持这种方式而不添加标量属性。所以我不想在我的模型中使用这些属性:
public int FooId { get; set; }
public int BarId { get; set; }
我的问题是特别是在 Entity Framework 6 中是否可以将这样的导航属性作为(复合)键? Most answers这个问题是基于 Entity Framework 的早期版本,当时是不可能的。那么问题来了,现在可以吗?
在this answer提到:
You need to setup your classes in a specific way so that EF recognises what your trying to achieve.
但我仍然不清楚这在技术上是否可行。如果是,有人可以提供有关如何实现此目标的代码示例吗?
最佳答案
你不能那样做。
不仅在 EF 6.X 中,而且在 EF Core 中也是不可能的。这是设计使然。如果您不在联结表上定义这些标量属性,EF 将不知道如何映射这些关系。我不得不再次说,这是设计使然。不幸的是,您在这里没有任何其他选择。您必须在联结表中包含这些标量属性。
关于c# - Entity Framework 6 - 导航属性的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709766/