c# - 在 EF 上具有默认筛选器的实体

标签 c# entity-framework entity

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

相关文章:

java - JPA2 : @Min constraint for float

asp.net-mvc-4 - 当连接字符串 configSource 就位时,Visual Studio 2012 添加带有上下文的 Controller 失败

c# - 一对多关系不起作用 - Entity Framework

javascript - Angular ngRepeat html内容

entity-framework - net core odata put和patch嵌套数据结构

c# - EntityCollection 与 List 上的 Except()

entity-framework - 好的 Entity Framework 示例应用程序?

c# - 如何从 C#/Mono 调用 linux 程序?

c# - .NET 将十六进制值的字符串转换为 Unicode 字符(支持不同的代码页)

c# - 如何有效地从存储过程中检索数千行