2015-05-14 105 views
3

我有這樣實體框架的關鍵

 public class Phone : ItemBase 
    { 
     public virtual string Model { get; set; } 

     public virtual decimal Price { get; set; } 

     [ScaffoldColumn(false)] 
     public virtual string ImagePath { get; set; } 

     public virtual string Network { get; set; } 

     [DisplayName("Dimensions")] 
     public virtual string BodyDimension { get; set; } 
} 

類和基礎類這樣

public class ItemBase 
{ 
    [ScaffoldColumn(false)] 
    [Key] 
    public virtual long ItemID; 

    [ScaffoldColumn(false)] 
    public virtual DateTime CreatedDate { get; set; } 

    [ScaffoldColumn(false)] 
    public virtual DateTime ModifiedDate { get; set; } 
} 

關鍵是在基類中定義的,但EF說

Phone ::實體類型'Phone'沒有定義鍵。爲實體類型定義密鑰 。

我應該將鍵字段移到電話類嗎? 什麼是最好的解決方案?

回答

2
  1. 你並不需要在ItemId欄加上虛擬
  2. 使ItemId屬性而不是字段。

是這樣的:

public class ItemBase 
    { 
     [ScaffoldColumn(false)] 
     [Key] 
     public long ItemID {get; set;} 

     [ScaffoldColumn(false)] 
     public virtual DateTime CreatedDate { get; set; } 

     [ScaffoldColumn(false)] 
     public virtual DateTime ModifiedDate { get; set; } 
    } 
+0

非常感謝。有效。這是解決方案! – Sajithd