我的sql数据库中有一个名为“ Clients”的表,该表中有一个名为status的字段。它可以包含2个值,“ A”表示有效,“ I”表示无效。同时,在使用Entity Framework v5的mvc Web应用程序中,我已经使用特定的ClientRepository实现了存储库模式。
每当我调用ClientRepository时,都会有一个预定义的过滤器,该过滤器可确保所有查询均被过滤,并且仅返回状态“ A”记录。
我现在面临的问题是当我使用LINQ查询链接到Clients的表时,例如-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/