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

10-11 18:40