我有很多類型,從界面「IEventReportElement」,這暴露了財產繼承的接口的所有類型的特定屬性配置「IdEventReport」:對實現除一
public interface IEventReportElement
{
long Id { get; set; }
long? IdEventReport { get; set; }
}
這是一個可以爲空的屬性,因爲我並不總是能夠立即正確地填寫它,但應該在數據庫中不能爲空。
爲什麼我添加了這行
modelBuilder.Types<IEventReportElement>().Configure(x=>x.Property(y=>y.IdEventReport).IsRequired());
在我的DbContext方法OnModelCreating那。
然而,鍵入「位置」必須實現這個接口,但是不應該在數據庫屬性「IdEventReport」之列,而是爲屬性「IdParent」這暴露了一個列。
System.InvalidOperationException:該物業 'IdEventReport' 是
public class Position : BOBase, IEventReportElement { public long? IdEventReport { get { return IdParent; } set { IdParent = value; } } public long? IdParent { get; set; } }
,並在模型構建器
modelBuilder.Entity<Position>().Property(x => x.IdParent).IsRequired(); modelBuilder.Entity<Position>().Ignore(x => x.IdEventReport);
然而部分,這個試圖創建數據庫時已經拋出異常不是'Position'類型的聲明屬性。通過使用Ignore方法或NotMappedAttribute數據註釋驗證是否未明確從模型中排除該屬性。確保它是一個有效的基本屬性。
雖然這可能是有效的,是否有可能重寫給定類型配置的特定類型?我是否必須將.IsRequired()行添加到實現此接口的每個其他類型,還是有另一種方法可以解決這個問題?
我想你試圖在查詢中選擇'Position.IdEventReport'。這是正確的嗎? –
否,模型中不應包含IdEventReport。 IEventReportElement有其他重要的屬性我想使用,我只是不想使用這個屬性(在數據庫中)。 – DevilSuichiro