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/

相关文章:

c# - 使用 NUnit,我可以确定哪些测试先于当前运行的测试吗?

c# - ORA-22288 : file or LOB operation FILEOPEN failed The system cannot find the path specified

c# - 自动将实体传递给 Controller ​​操作

asp.net-mvc - MVC - 如果图像未在 HTTP post 中重新上传,则不保存空图像数据(来自 SportsStore 示例)

c# - 如何在 Entity Framework 中没有 saveChanges 的情况下获取插入实体的 ID?

c# - 我可以减少 WPF 应用程序中手写笔/触摸输入的开销吗?

c# - DirectoryNotFoundException - 找不到部分路径

c# - Entity Framework - 类似属性的表达

java - 从@entity中的属性文件加载值

c# - 当 Entity Framework 中值为 null 时转换为默认值