2014-01-18 1 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; } 
} 

Первичный ключ таблицы Product является ITEMNO + VariantCode и будет создана правильно. Вторая таблица ProductAttribute должна иметь ключ ItemNo + VariantCode + FieldName, но с кодом выше EF6 создает первичный ключ FieldName и внешний ключ ItemNo + VariantCode. Я пробовал несколько вещей, включая установку атрибута [Key] в свойство Item в классе ProductAttribute, но это не работает. Есть идеи, как это сделать?

ответ

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; } 
}