[英]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.