В основном я хочу использовать мягкое удаление, но свойства навигации не отображают мягкие удаленные записи.Есть ли способы перехватить запросы свойств навигации для объектов 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.
Однако я не вижу, как это сделать для других объектов, которые имеют "мягко удаленные" объекты в своих свойствах навигации.
IE ЕслиЯ получаю доступ к myCategory.Products (где myCategory - это категория). На нем не должны отображаться какие-либо продукты, где IsDeleted == true
. Я мог бы потенциально обойти это, используя дополнительное свойство Category
public ICollection<Product> CurrentProducts
{
get
{
return this.Products.Where(p=>!p.IsDeleted);
}
}
это не элегантное решение, которое я ищу.Есть ли способ «привязать» критерии к свойству навигации или какие-нибудь более эффективные решения для этого?