2017-05-06 12 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の列です。
それは複合キーかもしれないが、あなたのモデルを考えると、私は私はあなたが基本クラスとしてそれを使用して、されていない場合SMSModelBaseClassabstractあるべきと信じて、注意点としてSMSModelBaseClass

Idプロパティを示唆していますそれを直接インスタンス化する

+0

サイドノートのおかげで....それを実装します。もしId列をSMSModelBaseClassに入れたら、別のクラスに継承されると、id列に沿って運ばれます。私は他のクラスのId列がほしくないです –

+0

あなたはたくさんの選択肢がありません - 恐らく各エンティティはKey列を必要とします。それは、Id、または何か他のものです... – Alex

関連する問題