Nao*_*aor 4 .net c# entity-framework
I供应商类别:
public class Supplier {
....
....
....
}
Run Code Online (Sandbox Code Playgroud)
我也有分包商类,并且分包商是供应商:
public class Subcontractor:Supplier {
....
....
....
}
Run Code Online (Sandbox Code Playgroud)
在我的数据库中,我有带有数据的Suppliers表和另一个具有id字段的表,该表充当供应商表的外键,并且那里也有分包商数据。
在实体框架edmx文件中,我声明了继承关系:

现在我想让所有不是分包商的供应商都在做,所以我在做:
context.Suppliers.OfType<Supplier>();
Run Code Online (Sandbox Code Playgroud)
但这也返回了分包商。
我如何才能只获得不是分包商的供应商?
试试看:
context.Suppliers.Where(s => !(s is Subcontractor));
Run Code Online (Sandbox Code Playgroud)
编辑
如果您有多个类是从SupplierLINQ to Entities的唯一选项派生而来的,则好像是这样的:
context.Suppliers.Where(s => !(s is Subcontractor)
&& !(s is DerivedClass2)
&& !(s is DerivedClass3)); // etc.
Run Code Online (Sandbox Code Playgroud)
实体SQL支持ONLY关键字,该关键字允许查询特定类型。但是没有相应的副本作为LINQ运算符。
这是一个OfTypeOnly<TEntity>运算符的实现,但是它大量使用元数据信息和手动表达式构建,并且在简单的场景中可能会显得过大。