EF 6代码优先错误:EntityType没有定义密钥

时间:2017-05-06 18:02:34

标签: c# asp.net-mvc entity-framework

我已经定义了一个包含createby,createdate,modifyby和modifydate属性的类,这些属性由其他类继承{因此我不必在具有这些字段的所有实体中创建字段}。我的代码是

public class SMSModelBaseClass
{

    [Required]
    [StringLength(50)]
    [Column(TypeName ="varchar")]
    [ScaffoldColumn(false)]
    public string CreateById { get; set; }

    [Required]
    [ScaffoldColumn(false)]
    public DateTime CreateDate { get; set; }

    [Required]
    [StringLength(50)]
    [ScaffoldColumn(false)]
    [Column(TypeName = "varchar")]
    public string ModifyById { get; set; }

    [Required]
    [ScaffoldColumn(false)]
    public DateTime ModifyDate { get; set; }

    [ForeignKey("CreateById")]
    public virtual ApplicationUser CreateBy { get; set; }

    [ForeignKey("ModifyById")]
    public virtual ApplicationUser ModifyBy { get; set; }

}

我遇到了主题错误。我知道我可以为它引入一个主键,但它会被其他类继承,这是我不想要的。

是否可以使用流畅的api或数据注释来绕过此错误?

1 个答案:

答案 0 :(得分:0)

使用EntityFramework,每个实体都需要一个密钥属性。

通常这是一个Id列 它可能是一个复合键,但根据您的模型,我建议Id

上的SMSModelBaseClass属性

作为旁注,如果您将SMSModelBaseClass用作基类,并且不直接实例化,我相信abstract也应该是// routes $stateProvider .state('todolist', { url: '/todo-list', views: { '@': { ..., controller: 'ListsController' } } }) .state('todolist.add', { url: '/list/add', onEnter: ['$state', '$uibModal', function ($state, $uibModal) { $uibModal.open({ ..., controller: 'FormListModalController' // <- in this controller I need to access the $scope from the parent }).result.finally(function () { ... }); }] })...