EF4 CTP5 POCO中的软删除,导航属性

Jam*_*ris 11 c# code-first entity-framework-4

基本上,我想使用软删除,但导航属性不显示软删除记录.有没有办法拦截实体框架中POCO对象的导航属性查询?

很简单的例子:

 public class Product
 {
    public int Id { get; set;}
    public string Name { get; set;}
    public int? CategoryId { get; set;}
    public virtual Category Category { get; set;}
    public bool IsDeleted { get; set;}
 }    

public class Category
{
    public int Id{ get; set; }
    public string Name { get; set; }
    public virtual ICollection<Product> Products { get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我可以轻松地将标准插入到我的存储库中,这样它就不会返回IsDeleted == true的任何产品.

但是,我无法看到如何在其导航属性中具有"软删除"的其他对象中完成此操作.

IE如果我访问myCategory.Products(其中myCategory是一个类别),它不应该显示IsDeleted == true的任何产品

我可以使用Category的附加属性来解决此问题

public ICollection<Product> CurrentProducts
{
    get
    {
         return this.Products.Where(p=>!p.IsDeleted);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不是我正在寻找的优雅解决方案.有没有办法将标准"附加"到导航属性或任何更好的解决方案来处理这个问题?

Arn*_*psa 2

也许你应该从另一个角度来看待这个问题。可能有帮助。当然不会受伤。:)