次の C# コードを見てください。複合キーを持つものを作成しようとしてClassC
いますが、別のテーブルで外部キーとして使用できる ID も作成しようとしています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: : 関係制約の従属ロールとプリンシパル ロールのプロパティの数は同じでなければなりません。
誰かがこれを解決しましたか、それとも私はこれに間違ってアプローチしていますか?