实体框架键未定义

本文关键字:未定义 框架 实体 | 更新日期: 2023-09-27 17:49:14

我有一个这样的类

     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'没有定义键。定义键对于实体类型。

我应该把关键字段移动到电话类吗?最好的解决方案是什么?

实体框架键未定义

  1. 您不需要在ItemId字段上标记virtual
  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; }
    }