实体框架密钥未定义

时间:2015-05-14 10:59:12

标签: c# entity-framework inheritance

我有一个这样的课程

     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类吗? 什么是最好的解决方案?

1 个答案:

答案 0 :(得分:2)

  1. 您不需要在ItemId字段
  2. 上标记虚拟内容
  3. 制作ItemId属性而不是字段。
  4. 类似的东西:

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