[英]Entity Framework code first: How to ignore classes
這與此處和此處的問題類似,但這些問題都是陳舊且沒有好的答案。
假設我有以下課程:
class HairCutStyle {
public int ID { get; set; }
public string Name { get; set; }
}
class CustomerHairCutPreference {
public int ID { get; set; }
public Customer Customer { get; set; }
public HairCutStyle HairCutStyle { get; set; }
}
假設我的HairCutStyle數據存儲在另一個數據庫的表中(我是從Paul Mitchell自己獲得的)。 我想將HairCutStyle類用作POCO類 - 我將在代碼中使用它來表示剪發樣式,但我不需要在我的數據庫中讀/寫該信息。 (假設我有一個單獨的服務層,可以從其他數據庫填充這些類的數據。)
如何告訴EF NOT在我當前的db上下文中創建HairCutStyle表? 但與此同時,我想在CustomerHairCutPreference表中存儲一個值,該值是對其他地方存儲的HairCutStyle數據的引用。 排序的“虛擬”外鍵,不受實際數據庫FK約束的約束。
添加在屬性CustomerHairCutPreference
為HairCutSytleID
然后用[NotMapped]
在屬性HairCutStyle
財產。 但請注意,您將負責確保HairCutStyle
和HairCutStyleID
保持同步。
class CustomerHairCutPreference {
public int ID { get; set; }
public Customer Customer { get; set; }
public int HairCutStyleID {get; set; }
[NotMapped]
public HairCutStyle HairCutStyle { get; set; }
}
或者,您可以使用HairCutStyle
完全排除HairCutStyle
不會被實體框架映射,如果您有多個鏈接到它的類,這可能很有用。
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Ignore<HairCutStyle>();
}
有三件事需要確保:
DbContext
派生的類中公開DbSet<HairCutStyle>
HairCutStyle
在OnModelCreating
覆蓋 HairCutStyle
使用屬性NotMapped
屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.