2014-02-25 180 views
3

在實體框架中,我想使用兩個外鍵作爲另一個實體類型的主鍵。在實體框架中定義兩個外鍵作爲主鍵

public class CustomerExtensionValue { 

    // Values for extended attributes of a customer 
    [Key] 
    [Column(Order = 0)] 
    public Customer Customer { get; set; } 

    [Key] 
    [Column(Order = 1)] 
    public CustomerExtension Extension { get; set; } 

    [Required] 
    public string Value { get; set; } 
} 

但是,這給我一個錯誤,一個關鍵會丟失。 \tSystem.Data.Entity.Edm.EdmEntityType: : EntityType 'CustomerExtensionValue' has no key defined. Define the key for this EntityType.

我知道我可以定義兩個更多的屬性來保存引用的實體類型的主鍵。 Visual Studio不夠智能,無法自己使用主鍵?

+0

重複的問題:http://stackoverflow.com/questions/14637252/how-do-i-create-a-primary-key-using-two-foreign -keys-在實體框架-5-代碼 –

回答

6

主鍵始終必須由實體類中的標量屬性定義。你不能單獨通過導航屬性來引用PK。在你的模型像這樣的定義是必需的:

public class CustomerExtensionValue { 

    [Key, ForeignKey("Customer"), Column(Order = 0)] 
    public int CustomerId { get; set; } 

    [Key, ForeignKey("Extension"), Column(Order = 1)] 
    public int ExtensionId { get; set; } 

    public Customer Customer { get; set; } 
    public CustomerExtension Extension { get; set; } 

    [Required] 
    public string Value { get; set; } 
}