Мягкие удаления, свойства навигации в 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;}
}

Я могу легко вставить критерии в свой репозиторий, чтобы он не возвращал продукты, для которых IsDeleted == true .

Однако я не вижу, как это сделать для других объектов, которые были «мягко удалены». Entites в их свойствах навигации.

IE Если я обращаюсь к myCategory.Products (где myCategory - это Категория), он не должен показывать продукты, для которых IsDeleted == true

Я мог бы потенциально обойти это, используя дополнительное свойство Category

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

] Но это не то элегантное решение, которое я ищу. Есть ли способ «привязать» критерии к свойству навигации или какие-либо лучшие решения, как с этим справиться?

11
задан James Harris 5 January 2011 в 09:44
поделиться