I 供应商类:
public class Supplier {
....
....
....
}
我也有分包商类,分包商是供应商:
public class Subcontractor:Supplier {
....
....
....
}
在我的数据库中,我有带有数据的 Suppliers 表和另一个带有 id 字段的表,它充当 suppliers 表的外键,我也有 subcintractor 数据。
在 Entity Framework edmx文件中我声明了继承关系:
现在我想获取所有不是分包商的供应商,所以我正在做:
context.Suppliers.OfType<Supplier>();
但这也会返回分包商..
我如何才能只获得非分包商的供应商?
最佳答案
试一试:
context.Suppliers.Where(s => !(s is Subcontractor));
编辑
如果你有多个派生自 Supplier
的类LINQ to Entities 的唯一选择似乎是这样的:
context.Suppliers.Where(s => !(s is Subcontractor)
&& !(s is DerivedClass2)
&& !(s is DerivedClass3)); // etc.
实体 SQL 支持 ONLY keyword允许查询特定类型。但是相应的对应物不能用作 LINQ 运算符。
Here是一个 OfTypeOnly<TEntity>
的实现运算符,但它大量使用元数据信息和手动表达式构建,在简单场景中可能会过大。
关于c# - Entity Framework 继承 - 仅检索父类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144757/