我的 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/