c# - Entity Framework 继承 - 仅检索父类型

标签 c# .net entity-framework

I 供应商类:

public class Supplier {
    ....
    ....
    ....
}

我也有分包商类,分包商是供应商:

public class Subcontractor:Supplier {
    ....
    ....
    ....
}

在我的数据库中,我有带有数据的 Suppliers 表和另一个带有 id 字段的表,它充当 suppliers 表的外键,我也有 subcintractor 数据。

在 Entity Framework edmx文件中我声明了继承关系: inheritance

现在我想获取所有不是分包商的供应商,所以我正在做:

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/

相关文章:

java - hibernate 优势?

c# - 使用列表条目作为字典的键

c# - 创建表时应该使用什么SqlDbType?

.net - 迁移到 Azure

mysql - 原则 2 和垂直划分

c# - .NET Entity Framework : Add-Migration is too slow

asp.net-mvc - ASP.NET MVC 5 EF6 - 只是业务逻辑类与存储库和工作单元更新

c# - 关于 throw helpers 的思考

c# - 获取 <compilation debug ="true"> 的 .NET Framework 设置

C# MVC Controller 错误地解析来自 POST 的 JSON