2015-05-14 104 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