以外のインターフェイスを実装するすべての種類の特定のプロパティの設定を持っている「IdEventReport」:は、私はプロパティを公開インターフェース「IEventReportElement」から継承するタイプの数を、持っている1
public interface IEventReportElement
{
long Id { get; set; }
long? IdEventReport { get; set; }
}
これは、私はいつも正しく記入することができないのですが、データベースでnullableでない必要があります。
私はDbContextの私OnModelCreatingメソッドにライン
modelBuilder.Types<IEventReportElement>().Configure(x=>x.Property(y=>y.IdEventReport).IsRequired());
を追加した理由厥。
しかし、タイプ 'Position'はこのインタフェースを実装する必要がありますが、データベース内のプロパティ 'IdEventReport'のカラムは持たず、代わりにそれが公開するプロパティ 'IdParent'のカラムを持つべきです。
public class Position : BOBase, IEventReportElement
{
public long? IdEventReport
{
get { return IdParent; }
set { IdParent = value; }
}
public long? IdParent { get; set; }
}
とデータベースを作成しようとしたときのModelBuilder
modelBuilder.Entity<Position>().Property(x => x.IdParent).IsRequired();
modelBuilder.Entity<Position>().Ignore(x => x.IdEventReport);
でのセクションでは、しかし、これはすでに例外をスロー:
のSystem.InvalidOperationException:プロパティ 'をIdEventReport' はタイプ 'Position'の宣言されたプロパティではありません。 IgnoreメソッドまたはNotMappedAttributeデータアノテーションを使用して、プロパティがモデルから明示的に除外されていないことを確認します。それが有効なプリミティブプロパティであることを確認してください。
これは有効かもしれませんが、特定のタイプの特定のタイプ設定を上書きすることはできませんか?このインタフェースを実装する他のすべての型に.IsRequired()行を追加する必要がありますか、これを克服する別の方法がありますか?
私はあなたがクエリで 'Position.IdEventReport'を選択しようとしたと思います。これは正しいですか? –
いいえ、IdEventReportをモデルに含めるべきではありません。 IEventReportElementには、私が使用したい他の重要なプロパティがあります。データベース内でこのプロパティを使用したくないだけです。 – DevilSuichiro