我有4个来自基类的类。
子类有一些额外的属性。这导致数据库中的单个组合表具有额外的列' Discriminator'。这是由EF自动完成的,用于在加载数据时识别对象的类型。
BaseTask 是基类
Task1
Task2
Task3
Task4
Task1类有一个名为 SpecialKey 的属性。 类从BaseTask驱动
所以现在我想列出从表到UI的所有对象。
当我加载表格结果如下:
var tasks = DbContext.BaseTasks.ToList();
foreach(var task in tasks){
// output all columns details from BaseTask table from database
}
但正如您所看到的那样,因为 SpecialKey 不是基类的一部分,所以我无法输出该属性。
我该如何克服这个问题?
我真的必须做以下事情吗?
var tasks = DbContext.BaseTasks.ToList();
foreach(var task in tasks.OfType<Task1>){
// output task 1 details
}
foreach(var task in tasks.OfType<Task2>){
// output task 2 details
}
foreach(var task in tasks.OfType<Task3>){
// output task 3 details
}
...等 这看起来很乱。这真的告诉我继承不是创建表对象的好主意。
答案 0 :(得分:0)
您可以编写一个简单的检查来查看它的类型并执行特定的操作:
foreach(var task in tasks){
if (task is Task1) { // do whatever you need to... }
// other checks...
}