在那裏我有類似以下樣機的東西:實體框架4.1代碼首先,聯合主鍵作爲外鍵
public class ClassA
{
public int ClassAID { get; set; }
}
public class ClassB
{
public int ClassBID { get; set; }
}
public class ClassC
{
public int ClassAID { get; set; } //Foreign Keys combined as Primary Key
public int ClassBID { get; set; }
public virtual ClassA SomeA { get; set; }
public virtual ClassB SomeB { get; set; }
public virtual ClassD SomeD { get; set; }
}
public class ClassD
{
public int ClassAID { get; set; } //Primary Key and also references Class C Primary Key
public int ClassBID { get; set; }
public virtual ClassC SomeC { get; set; }
}
D類是在那裏我有一個問題,我希望表示ClassC上主鍵的屬性成爲ClassD上的主鍵,但也是外鍵引用。 (假設上面的屬性名稱與表列名稱相同)
在底層數據庫中,ClassC和ClassD的對應表具有一對一關係,其中ClassA到ClassC和ClassB到ClassC是一對多的關係。
當涉及到實體框架,但它似乎無法處理同一個名稱同時充當主鍵和外鍵的多個屬性,在它生成的底層SQL中,我可以看到它尋找列ClassD_ClassAID,ClassD_ClassBID - 有沒有一種方法使用模型配置來指定正確的映射?
我曾嘗試:
this.HasKey(c => new { c.ClassAID, c.ClassBID });
this.HasRequired(c => c.ClassC)
.WithRequiredDependent();
我也試過:
this.HasKey(c => new { c.ClassAID, c.ClassBID });
this.HasRequired(c => c.ClassC)
.WithRequiredDependent()
.Map(m => m.MapKey("ClassAID", "ClassBID"));
到目前爲止任何試圖引進一個映射會見
「屬性名XXX已存在於元數據中「。
看來我所缺少的是明確指定這個映射:using'.WithRequiredDependent(c => c.SomeD);'謝謝! – Mark 2011-10-18 07:39:50