在你的情況下,您可以添加返回您查詢的方法:
public class MyContext: DbContext
{
public DbSet<Entity> Entities {get;set;}
public IQueryable<Entity> NonDeletedEntities()
{
return this.Entities.Where(e => e.IsDeleted == false);
}
}
現在你可以消耗該查詢,並與其他條件聚集它,他們都將被查詢
new MyContext().NonDeletedEntities().Where(e => e.Name == "Philippe");
//is the same as
new MyContext().Entities.Where(e => e.IsDeleted == false && e.Name == "Philippe");
UPDATE
如您的評論所述,如果您想從類別實體中訪問未刪除的產品
public class Category
{
public virtual ICollection<Product> Products { get; set; }
public IQueryable<Products> NonDeletedProductts()
{
return this.Products.Where(e => e.IsDeleted == false);
}
}
我沒有測試過這個,但它應該工作。
來源
2013-06-25 19:58:10
Jay
謝謝。這是預先過濾軟刪除實體的常用方法嗎?如果可以在兩個實體之間的關係中的某個地方指定查詢,我會首選的,例如,在這裏this.HasRequired(t => t.Category).WithMany(t => t.Products).HasForeignKey(d => d.CategoryId);'。您描述它的方式,我每次訪問'Category'類中的'Products'屬性時都必須查詢'IsDeleted'屬性。 – Philippe
如果在實體本身上使用相同的方法,則該方法將起作用。 – Jay