没有标量PK属性的EF PK FK映射

本文关键字:PK EF FK 映射 属性 标量 | 更新日期: 2023-09-27 18:26:51

是否可以在不定义标量属性的情况下定义复合外键?

public class A 
{
  public virtual int AID { get; set; }
}
public class B
{
  public virtual int BID { get; set; }
}
public class CompoundKeyClass
{
  public virtual A AObject { get; set; }
  public virtual B BObject { get; set; }
}

在不使用FluentAPI定义A和B类型的标量ID属性的情况下,如何使属性AObject和BObject成为CompoundKeyClass的复合PK?

没有标量PK属性的EF PK FK映射

你不能。AIDBID都必须在CompoundKeyClass中映射为复杂主键,并且每个都必须映射为相关表的外键。

我怀疑你做不到;我能找到的最接近这方面的文档是:

KeyAttribute

KeyAttribute用于指定属性/列是实体主键的一部分,并且仅适用于标量属性。

但是,您应该能够将外键属性命名为"_AID"answers"_BID",和/或将它们标记为[Browsable(false)]。这样可以确保您不会意外使用甚至看到它们。