回答
听起来像你想用默认到WHERE添加到您的对象集。我不知道默认情况下是否可以这样做,但我可以想到的一些方法可以实现这一点:
1)使用视图为您提供WHERE子句并从视图中构建实体。我从来没有真正做到这一点,所以我不知道视图与EF有多好 - 如果你需要写回数据库,这可能不会很好。
2)在局部类的EDMX的创建新特性,如:
partial class MyEntities
{
public IQueryable<Foo> ActiveFoos
{
return Foos.Where(f => f.Deleted == 0);
}
}
...
using (var context = new MyEntities())
{
var foo = context.ActiveFoos.Where(f => f.Id == 1).SingleOrDefault();
}
3)创建一个子上下文类和new
出来的性能 - 那种丑陋,但这将是相当透明的开发者一旦建立起来。
public class CustomEntities : MyEntities
{
public new IQueryable<Foo> Foos
{
get { return base.Foos.Where(f => f.Deleted == 0); }
}
}
...
using (var context = new CustomEntities())
{
var foo = context.Foos.Where(f => f.Id == 1).SingleOrDefault();
}
+1非常有用的想法。 –
@Joe伊诺斯 - 可以只是做 context.Foos.SingleOrDefault(F => f.Id == 1); 而不是 context.Foos.Where(f => f.Id == 1).SingleOrDefault(); –
@ Cubicle.Jockey好的呼叫。我通常使用'.Where'方法,即使它不是必需的,因为它更容易修改(添加更多的Where,OrderBy等等),但这是一种非常常见的情况,会更干净。 –
您必须在您从EntityFramework获得结果时执行此操作。
例子:
IEnumerable<TableEntity> filteredResults = TableEntityName.Where(t => t.Delete = 0);
-1绝对有选择保持这种干爽。 –
的唯一可靠方法,以确保Deleted = 0
用于总是(包括延迟加载,显式加载和渴望加载)使用Conditional mapping。条件映射的缺点是Deleted
列在entity = Delete操作中不可用,该操作将设置此列的列必须映射到存储过程。
- 1. 实体框架ChangeTracker未更新,返回“已删除”实体
- 2. 如何删除/删除实体框架中的0..1实体4
- 3. 删除实体框架
- 4. 实体框架:删除子实体
- 5. 删除实体的实体框架
- 6. 删除实体框架对象
- 7. 实体框架删除对象问题
- 8. 实体框架删除子对象
- 9. 实体框架;面向对象删除
- 10. 实体框架 - 当级联删除
- 11. 恢复实体框架中已删除的导航属性
- 12. 实体框架,删除实体如果从另一个实体
- 13. 实体框架被删除条目
- 14. 实体框架,软删除和查询
- 15. 实体框架4,SQLCE与删除
- 16. 实体框架4.3和级联删除
- 17. 用实体框架删除行
- 18. 实体框架中的级联删除
- 19. 实体框架 - 级联删除
- 20. 实体框架删除约束
- 21. 实体框架6.1删除列
- 22. 删除记录实体框架
- 23. 实体框架5软删除
- 24. 实体框架删除性能
- 25. 实体框架中的级联删除
- 26. 实体框架多级联删除
- 27. 实体框架无法完成删除
- 28. 从表与实体框架/ ADO.NET删除
- 29. 实体框架 - 删除列表项
- 30. 无密钥的实体框架删除
@Darin我有一个而不是dlete触发器,将删除设置为1.所以现在我只需要筛选记录不包括删除记录。 – user194076
你有没有考虑过仅仅使用这个视图? – Gabe