2011-03-17 87 views
3

我目前得到想要創建使用代碼首先一對一的關係,當出現以下錯誤主鍵一對一的關係: System.Data.Edm.EdmAssociationEnd:多重無效在關係「C001_Holding_Teste_C001_Holding」中的角色'C001_Holding_Teste_C001_Holding_Source'中。由於從屬角色是指關鍵屬性,上限從屬角色的多重性的必須是1 我的實體定義如下:一到與實體框架代碼優先

[Table("C001_Holding", Schema = "Cad")] 
public partial class C001_Holding 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int C001_Id { get; set; } 

    [MaxLength(16)] 
    public string C001_Codigo { get; set; } 

    [MaxLength(100)] 
    public string C001_Descricao { get; set; } 
} 

public class C001_Holding_Test 
{ 
    [Key] 
    public int C001_Id { get; set; } 
    [MaxLength(100)] 
    public string C001_TestInfo { get; set; } 

    [ForeignKey("C001_Id")] 
    public virtual C001_Holding C001_Holding { get; set; } 
} 

我不想用流利創建這些關係,有誰知道爲什麼會發生這種情況?

Tks。

回答

5

可以將ForeignKey屬性放置在導航屬性上,然後指定想要作爲外鍵使用的屬性的名稱(這就是您所做的)。或者,您可以將其放置在外鍵屬性上,然後指定代表關係的導航屬性的名稱。這看起來像:

public class C001_Holding_Test 
{ 
    [Key] 
    [ForeignKey("C001_Holding")] 
    public int C001_Id { get; set; } 

    [MaxLength(100)] 
    public string C001_TestInfo { get; set; } 

    public virtual C001_Holding C001_Holding { get; set; } 
} 

出於某種原因,第二種選擇工作,而第一拋出一個錯誤。 (這對我來說感覺像是一個bug,因爲兩個選項都應該代表相同的關係,或者實際上存在語義差異,我沒有看到......)

+1

感謝Slauma,工作起來像一個魅力。 – 2011-03-17 18:45:14