【发布时间】:2012-03-24 09:06:01
【问题描述】:
所以我首先使用实体框架代码(所以没有 .edmx) 我有一个带有 bool IsEnabled 的基实体类来执行软删除
我正在使用存储库模式,因此可以使用 IsEnabled 过滤掉所有针对存储库的查询。
但是,任何时候我使用存储库获取 IsEnabled 的 MyType,延迟加载 MyType.Items 可能意味着无法启用项目。
有没有办法,也许用 EF Fluent 来描述如何对表进行过滤?
更新:
如果我有一个数据库集
public class UnitOfWork : DbContext
{
private IDbSet<MyObj> _MyObj;
public IDbSet<MyObj> MyObjs
{
get { return _MyObj ?? (_MyObj = base.Set<MyObj>()); }
}
}
有什么方法可以告诉 DbContext 过滤 DbSet?
【问题讨论】:
-
同样在更新之后答案仍然是:不。当然你可以像
IQueryable<MyObj> MyFilteredObjs { get { return MyObjs.Where(m => m.IsEnabled); } }这样的上下文类中添加一个属性。但我认为这不是您想要的,它不适用于延迟加载或急切加载。
标签: entity-framework c#-4.0 ef-code-first fluent soft-delete