簡體   English   中英

使用實體框架6的SQL Server TPT繼承-數據庫優先

[英]SQL Server TPT Inheritance with Entity Framework 6 - DB First

我有一個首先使用EF6和數據庫的ASP.NET MVC項目。

我有一張桌子:正在使用的“調​​查”。 現在,我需要一種新型的調查,它需要“調查”的所有字段以及一些新的特定字段。

為此,我考慮過使用繼承。 因此,我創建了一個新表“ CourseSurvey”,該表具有一個主鍵,該主鍵也是一個外鍵,它引用了“ Survey”的主鍵以及其他一些不可為空的字段。

這似乎很好。

當我需要檢查“ Survey”中的行是“ Survey”還是“ CourseSurvey”的實例時,我會這樣做:

var survey = unitOfWork.SurveyRepository.FindSingleBy(m => m.SurveyId == viewModel.SurveyId) as CourseSurvey;

if(survey != null) {
   // then is a child
}

這是個好習慣嗎?

另外,是否可以將“調查”的實例轉換為“課程調查”? 如果是這樣,我該怎么辦?

最后,我在這里做對了還是有更好的設計方法? 我可以將“ CourseSurvey”列放入“ Survey”中,並使其可以為空,但是我不想用未使用的列來污染“ Survey” ...

我現在從這個概念開始,但我仍然覺得我沒有完全理解它。

謝謝!

我認為您應該使用TPH,甚至要記住,您將擁有一些列,這些列對於層次結構中的具體類是特殊的。 EF將創建“ Discriminator”列,您將可以使用類似Fetch(m => m is CourseSurvey)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM