采用以下 C# 代码。我正在尝试创建ClassC
具有复合键的名称,但也在其中创建可用作另一个表中的外键的标识ClassD
。我宁愿使用这个外键而不是尝试映射看起来有点奇怪的复合键。
public class ClassA
{
[Key]
public int ClassAID { get; set; }
public virtual ICollection<ClassC> SomeClassCs { get; set; }
}
public class ClassB
{
[Key]
public int ClassBID { get; set; }
public virtual ICollection<ClassC> SomeClassCs { get; set; }
}
public class ClassC
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ClassCID { get; set; }
[Key, Column(Order=0), ForeignKey("SomeA")]
public int ClassAID { get; set; } //Foreign Keys combined as Primary Key
[Key, Column(Order=1), ForeignKey("SomeB")]
public int ClassBID { get; set; }
public virtual ClassA SomeA { get; set; }
public virtual ClassB SomeB { get; set; }
}
public class ClassD
{
[Key]
public int ClassDID { get; set; }
[ForeignKey("SomeC")]
public int ClassCID { get; set; }
public virtual ClassC SomeC { get; set; }
}
在创建我的迁移时,我收到以下错误:
System.Data.Entity.Edm.EdmAssociationConstraint::关系约束中的从属角色和主体角色中的属性数量必须相同。
有人解决了这个问题,还是我处理错误?