定义对象上下文时,在 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/