我的 mvc 5 專案中有名為 Operations 的模型。
public class Operation
{
public int OperationID { get; set; }
public string Name { get; set; }
public decimal Commission { get; set; }
public int DepartmentID { get; set; }
public bool CommissionValidity { get; set; }
public bool IsHidden { get; set; }
public decimal Capacity { get; set; }
public virtual Department Department { get; set; }
}
要求是每當從如下背景關系中呼叫此模型時
Var db = new ApplicationDbContext();
var Operations = db.Operations.tolist();
我只想加載 IsHidden 欄位為 False 的記錄,而不在查詢中使用 where 子句
有什么方法可以像我制作建構式或定義 getter Setter 函式來獲得目標。
uj5u.com熱心網友回復:
如果您使用的是 Entity Framework Core,則可以使用全域查詢過濾器來實作這一點。
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Operation>().HasFilter(o => !o.IsHidden);
}
Entity Framework 6 沒有查詢過濾器。為此,您需要使用不同的屬性DbContext來回傳可見物體:
public IQueryable<Operation> VisibleOperations
=> Set<Operation>().Where(o => !o.IsHidden);
但是,您將無法使用此過濾查詢在資料庫中添加或洗掉物體,因此您可能仍需要公開完整的IDbSet<Operation>,這不會應用過濾器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/319099.html
上一篇:如何以客戶模式向EMR遠程提交spark-submit?
下一篇:Api呼叫時可觀察到的訂閱空結果
