2014-01-18 18 views
0

創建我的數據庫結構時遇到問題。例如,我有那3個類創建3列的密鑰,包括與另一個表的關係(代碼優先)

public class Product 
{ 
    [Key, Column(Order = 1)] 
    [Required] 
    public string ItemNo { get; set; } 

    [Key, Column(Order = 2)] 
    [Required] 
    public string VariantCode { get; set; } 

    public virtual List<ProductAttribute> Attributes { get; set; } 

    public Product() 
    { 
     Attributes = new List<ProductAttribute>(); 
    } 
} 

public class ProductAttribute 
{ 
    [Key] 
    [Required] 
    public string FieldName { get; set; } 

    public string FieldValue { get; set; } 

    public virtual Product Item { get; set; } 

} 

public class DbContext : DbContext 
{ 
    public DbSet<Product> Products { get; set; } 
    public DbSet<ProductAttribute> Attributes { get; set; } 
} 

產品表的主鍵是ItemNo + VariantCode並且將被正確創建。第二個表ProductAttribute應該有一個ItemNo + VariantCode + FieldName的關鍵字,但是EF6以上的代碼會創建一個主鍵FieldName和一個ItemNo + VariantCode的外鍵。我已經嘗試了幾件事情,包括將[Key]屬性設置爲ProductAttribute類中的Item屬性,但這不起作用。任何想法如何做到這一點?

回答

0

嘗試以下操作:

public class ProductAttribute 
{ 
    [Key] 
    [Required] 
    public string FieldName { get; set; } 

    public string FieldValue { get; set; } 

    [Key] 
    [ForeignKey("Item"), Column(Order = 1)] 
    public string ItemNo { get; set; } 

    [Key] 
    [ForeignKey("Item"), Column(Order = 2)] 
    public string VariantCode { get; set; } 

    public virtual Product Item { get; set; } 
} 
相關問題