回答
聽起來像你想用默認到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. 恢復實體框架中已刪除的導航屬性
- 16. 實體框架被刪除條目
- 17. 實體框架 - 刪除列表項
- 18. 實體框架4.3和級聯刪除
- 19. 與內刪除加入實體框架
- 20. 實體框架中刪除多行
- 21. 實體框架 - 級聯刪除
- 22. 實體框架6.1刪除列
- 23. 刪除數據庫。實體框架
- 24. 實體框架多級聯刪除
- 25. 實體框架硬級聯刪除
- 26. 刪除多行與實體框架5
- 27. 實體框架5軟刪除
- 28. 從表與實體框架/ ADO.NET刪除
- 29. 刪除記錄實體框架
- 30. 實體框架刪除性能
@Darin我有一個而不是dlete觸發器,將刪除設置爲1.所以現在我只需要篩選記錄不包括刪除記錄。 – user194076
你有沒有考慮過僅僅使用這個視圖? – Gabe