簡潔にするために要約した次のセットアップがあります。
public abstract class AuditableEntity
{
public int Id { get; set; }
public Login Login { get; set; } // Login that create this identity.
}
public class Login: AuditableEntity
{
public Security Security { get; set; }
public Guid SessionGuid { get; set; }
}
public class Security: AuditableEntity
{
public string UserName { get; set; }
public string PasswordHash { get; set; }
}
現在は、エンティティ自体Loginには必要ありません。Login実際、それはそのテーブルに属していないため、次のように無視します。
modelBuilder.Entity<Login>().Ignore(l => l.Login);
他のすべてのテーブルで必須にしたいのですが、たとえば、必須にしようとするとUser:
modelBuilder.Entity<Security.Security>().Property(p => p.Login).IsRequired();
コンパイル エラーが表示されます。以前の呼び出しでパラメーター 'T' として使用することが許可されていることに注意してくださいIgnore。したがって、これは他の非表示の T であると想定しています。
私のすぐにわかる解決策はあまりエレガントではありません。
Logininの参照プロパティではなく、FK 値を使用しAuditableEntityます。- なしで新しい基本クラスを作成し、
Loginそこから派生して を追加Loginし、最上位の基本から Login クラスを継承し、その直下の子孫から他のすべてのクラスを継承します。
これを行うためのより良い方法はありますか?