c# - 如何在 Entity Framework 中的导航属性上放置过滤器或条件

标签 c# entity-framework

我的 sql 数据库中有一个名为“Clients”的表,该表中有一个名为 status 的字段。它可以包含 2 个值,“A”表示事件,“I”表示不活动。同时,在我使用 Entity Framework v5 的 mvc web 应用程序中,我已经使用特定的 ClientRepository 实现了存储库模式。

每当我调用 ClientRepository 时,都会有一个预定义的过滤器确保所有查询都被过滤,并且只返回状态“A”记录。一切都很好。

我现在面临的问题是当我使用 LINQ 查询链接到客户端的表时,例如 - ClientOrders,然后访问名为 Clients 的导航属性。当我这样做时,它会检索所有具有任何“状态”(包括“我”)的客户。

有谁知道是否有办法在设计器或上下文中配置 E.F. 来设置导航属性的条件以满足我的要求,以便只返回状态“A”?

请注意,这是我的应用程序中使用“状态”作为记录指示器的许多情况中的一个示例,并且有多个导航属性我需要应用修复。

谢谢。

最佳答案

您可以使用 LINQ 查询来实现此目的。这是一个这样做的例子:

var clientOrders = _context.ClientOrders    
    .Select(item => new {
        ClientOrders = item,
        Clients = item.Clients.Where(q => q.Status == "A")
    }).ToList();

这将返回新匿名类型的列表。执行此查询后,您可以将匿名结构转换为 ClientOrders。

关于c# - 如何在 Entity Framework 中的导航属性上放置过滤器或条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19154648/

相关文章:

c# - XMLSerializer 序列化日期错误 : Is not a valid AllXsd

c# - 通过 CodeDom 生成非托管 C++

c# - 字典不存储值

c# - 使用 Entity Framework 从存储过程中获取数据

c# - providerName ="System.Data.EntityClient"的默认超时

C# - 程序员面试挑战 - 接口(interface)和模式编程

c# - 如何导出 .xlsx 文件 C# ASP.NET MVC razor

c# - Entity Framework 是否需要预取路径?

c# - EntityFramework 事务 - 保存到多个表

c# - Entity Framework 和 DataContractSerializer