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