まず、継承コードに問題があります。 は、私は次のようになり、基本クラスがあります。EF:流暢なAPIで基本クラスプロパティをマップ
public abstract class BaseEntity
{
public DateTime? DateCreated { get; set; }
public string UserCreatedId { get; set; }
public DateTime? DateModified { get; set; }
public string UserModifiedId { get; set; }
public virtual UserState UserCreated { get; set; }
public virtual UserState UserModified { get; set; }
}
をし、私はそれを継承し、これが私の名前UserCreated_userStateIdとUserModified_UserStateIdと追加の列を与えています。
modelBuilder.Entity<BaseEntity>().HasOptional(x => x.UserCreated).WithMany().HasForeignKey(x => x.UserCreatedId);
modelBuilder.Entity<BaseEntity>().HasOptional(X => X.UserModified).WithMany().HasForeignKey(x => x.UserModifiedId);
しかし、これは私にエラーを与える::だから私はこのような流暢なAPIを試してみてください「は、一つ以上の検証エラーがモデルの生成中に検出されました:
BaseEntity::。EntityType 『BaseEntity』は定義されたキーを持っていない定義このEntityTypeのキー。 BaseEntities:EntityType:EntitySet 'BaseEntities'は、キーが定義されていないタイプ 'BaseEntity'に基づいています。キーの定義を避け、プロパティのマッピングのみを変更する方法私は派生クラスのキーを持っています。
したがって、派生クラスごとに個別のキーを定義し、「コンクリートクラスごとの戦略」戦略を使用する必要がありますか?次に、派生クラスエンティティに対して基本クラスのプロパティを設定する必要があります。 – grek40
私が正しく理解していれば、あなたは** EF継承**を使用していませんが、単純なC#クラスの継承ですか? –
はい、しかし、私はそれをすべて一つずつ構成するためには、多くの派生クラスが必要です。これは私に多くのコピーの貼り付けコードを生成し、私はそれをしたくないです。それ以上の解決策はありますか?はい、私はC#クラスの継承を持っています。私はきれいなモデルを取得し、流暢なAPIのすべてを取得しようとします。 – CrazyBaran