2016-11-08 56 views
1

如何避免在數據庫中創建一個名爲「Discriminator」的列,如果我從Model類繼承業務類(模型類映射到數據庫表)。因爲此刻如果我繼承我的業務類(例如細節)到現有模型類(即DataSpecific),它會要求代碼首先遷移。在遷移中,我可以將辨別器視爲新列。我真的不想要這個。因爲原始模型類正在整個應用程序中使用,並且代碼正常工作。如何在'Code First Entity Framework'中避免'discriminator'列

我怎樣才能阻止 「descriminator」 欄目的創建

C#代碼:

模型類

public class DataSpecific 
{ 

} 

業務內容類

public class Specific 
{ 

} 

因此我可以在遷移中看到以下代碼

​​

我該如何避免這種情況?

+0

那是因爲你使用的TPH(每個層次結構表)。選擇TPT或TPC,您將避免使用「Discriminator」列。請參閱https://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/implementing-inheritance-with-the-entity-framework-in-an-asp-net -mvc-application – haim770

+0

有沒有流利的api命令或者我們可以通過哪種方式指示實體框架使用TPT或TPC? – Usman

+0

是的。這將是'ToTable(「...」)'。見https://weblogs.asp.net/manavi/inheritance-mapping-strategies-with-entity-framework-code-first-ctp5-part-3-table-per-concrete-type-tpc-and-choosing-strategy -guidelines – haim770

回答

1

或者應用NotMapped數據詮釋您的業務類:

[NotMapped] 
public class Specific : DataSpecific 
{ 
} 

或使用Ignore流利的API:

modelBuilder.Ignore<Specific>(); 
+0

Ivan:謝謝你的回答。它真的按照你的建議工作。 我有責任 – Usman

+0

不客氣,很高興幫助:) –

相關問題