簡潔にするために要約した次のセットアップがあります。
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 であると想定しています。
私のすぐにわかる解決策はあまりエレガントではありません。
Login
inの参照プロパティではなく、FK 値を使用しAuditableEntity
ます。- なしで新しい基本クラスを作成し、
Login
そこから派生して を追加Login
し、最上位の基本から Login クラスを継承し、その直下の子孫から他のすべてのクラスを継承します。
これを行うためのより良い方法はありますか?