小编Jam*_*ris的帖子

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

基本上,我想使用软删除,但导航属性不显示软删除记录.有没有办法拦截实体框架中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)

c# code-first entity-framework-4

11
推荐指数
1
解决办法
747
查看次数

标签 统计

c# ×1

code-first ×1

entity-framework-4 ×1