我的 .edmx 文件中有一个名为 Client 的实体。
我必须再次运行几个 linq 查询,但在所有这些查询上,我需要一个过滤器(比如说 active=1)。
我不想在我的所有查询中都使用 where c.active == 1
,我的实体应用默认过滤器更有意义。这是可以做到的吗?
或者我可以将查询作为实体而不是表的基础吗? (我采用数据库优先方法)
我知道另一种解决方案是在数据库上创建一个 View 并将实体链接到该 View ,但我也不希望这样做。
最佳答案
您可以在生成的数据库上下文中添加其他方法:
partial class DatabaseContext // same name as your generated context
{
IQueryable<Client> ActiveClients { get { return Clients.Where(c => c.active == 1); } }
}
并在整个代码中使用它。由于它是部分类的一部分(在您生成的上下文类之外的其他文件中定义),因此当您刷新架构时,它不受代码生成工具的影响。
关于c# - 在 EF 上具有默认筛选器的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12493641/