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

时间:2012-03-05 18:17:05

标签: c# entity-framework-4 ef-code-first

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

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?

2 个答案:

答案 0 :(得分:1)

你做不到。 AIDBID都必须位于CompoundKeyClass映射为复杂主键的位置,并且每个都必须映射为相关表的外键。

答案 1 :(得分:1)

我怀疑你不能;我能找到的最接近文档的是this

  

KeyAttribute

     

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

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