c# - 我们如何在 Entity Framework 中进行对象过滤?

标签 c# .net entity-framework

定义对象上下文时,在 Entity Framework 中使用代码优先,例如:

public class DomainContext : DbContext
{
    public DomainContext() { }
    public virtual DbSet<News> News { get; set; }
}

我们都知道您可以查询“新闻”,执行以下操作(例如,获取今天发布的所有新闻):

var ctx = new DomainContext();
ctx.News.Where(x => x.PublishedDate == DateTime.Now.Date)

但是,这就是问题所在:有没有一种方法可以对通过 ctx.News 的所有查询应用预定义的过滤/条件?假设我希望对 ctx.News 的所有查询隐式应用“Published Today”过滤?

最佳答案

查询新闻无法添加自动条件(过滤器)。所有发布的示例都有效,但前提是您直接查询 News。例如,如果您加载指向 News 的导航属性,示例将失败。

EDMX 通过 conditional mapping 解决这个问题但这会导致其他非常严重的缺点。条件映射是固定的(如果不重建模型就无法更改)并且每种类型只能有一个条件——就像 TPH 降级为单个实体类型。此外,条件映射中定义的条件可能不适用于“今天”。条件映射在代码优先方法中不可用。

关于c# - 我们如何在 Entity Framework 中进行对象过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6023104/

相关文章:

c# - WebAPI - 基于实体修饰属性的通用搜索服务

c# - 使用 BasicHttpBinding、http header 和 soap 信封的 WCF 堆栈中的数据包碎片总是由数据包边界分割?

c# - 关闭 SQLiteConnection (SQLiteConnectionWithLock)

.net - 在不同文化中使用 DateTime 的最佳实践是什么

c# - 是否可以在 LinQ 中的 where 子句中使用条件?

asp.net-mvc - 是否可以使用 Entity Framework 代码优先设置唯一约束?

c# - CheckBox 呈现为 Label

c# - 带有参数化 IN 子句的 FluentNHibernate 过滤器

.net - RouteTable.Routes.MapHubs() 仅在 Windows Azure 模拟器中抛出 ArgumentNullException。为什么?

c# - 在 Postgres SQL 连接失败时在本地保存数据的选项有哪些