2017-05-06 89 views
0

我已经定义了一个类,该类保存由其他类继承的createby,createdate,modifyby和modifydate属性{这样我就不必在所有类中创建该字段有这些领域的实体}。我的代码是EF 6代码优先错误:EntityType没有定义密钥

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或数据注释绕过这个错误?

回答

0

使用EntityFramework,每个实体都需要一个关键属性。

通常这是一个Id列。
这可能是一个复合键,但考虑到你的模型,我建议在SMSModelBaseClass

Id财产作为一个方面说明,我相信SMSModelBaseClass也应该abstract如果你使用它作为一个基类,而不是直接实例化

+0

感谢您的注意....将实现。如果我把ID列放在SMSModelBaseClass中,当被另一个类继承时,它将携带它的id列。我不想在其他类中的Id列 –

+0

我担心你没有太多选择 - 每个实体都需要一个Key列。它要么是身份证,要么就是别的... – Alex

相关问题