Fondamentalement, je souhaite utiliser des suppressions logicielles, mais les propriétés de navgiation ne montrent pas les enregistrements supprimés. Existe-t-il des moyens d'intercepter les requêtes de propriétés de navigation sur les objets POCO dans l'infrastructure de l'entité?Suppression logicielle, propriétés de navigation dans EF4 CTP5 POCO
exemple très simple:
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;}
}
je peux facilement insérer les critères dans mon référentiel afin qu'il ne retourne pas de produits où IsDeleted == true.
Cependant, je ne vois pas comment accomplir cela pour d'autres objets qui ont des entités 'soft deleted' dans leurs propriétés de navigation.
IE Si j'accès myCategory.Products (où myCategory est une catégorie), il ne doit pas montrer tous les produits où IsDeleted == true
je pourrait contourner cela en utilisant une propriété supplémentaire de la catégorie
public ICollection<Product> CurrentProducts
{
get
{
return this.Products.Where(p=>!p.IsDeleted);
}
}
Mais ce n'est pas la solution élégante que je cherche. Existe-t-il un moyen d'associer des critères à la propriété de navigation ou de trouver de meilleures solutions pour gérer cela?
Ahh maintenant je vois votre problème ... :) – gingerbreadboy
Je dirais que la solution que vous proposez est la meilleure. Vous ne savez pas pourquoi vous ne pensez pas que c'est élégant? Semble assez propre et simple pour moi. –
Avez-vous trouvé un moyen d'aborder cela? Je cours dans le même scénario et aimerais savoir quelle approche vous avez prise. – muruge