je les suivantes (très simplifiée) domaine:Query Propriétés NHibernate avec LINQ
public class Product
{
public virtual int Id { get; set; }
public virtual string Description { get; set; }
public virtual IList<Category> Categories { get; set; }
}
public class Category
{
public virtual int Id { get; set; }
public virtual string Description { get; set; }
}
La collection many-to-many est mis en correspondance en utilisant le code XML suivant:
<bag name="Categories" table="ProductsCategories">
<key column="ProductID" />
<many-to-many column="CategoryID" class="Category" />
</bag>
Quand je chargement de mes catégories en utilisant la propriété du produit tout fonctionne correctement:
Product product = ProductRepository.Find(1);
var categories = product.Categories;
Le problème est que lorsque je tente de filtre ma collection, par exemple:
Product product = ProductRepository.Find(1);
var categories = product.Categories.Where(c => c.SomeProperty == someValue);
La requête est pas exécutée sur la base mais il utilise LINQ aux objets pour filtrer le résultat! Est-il possible de résoudre ce problème sans utiliser HQL et sans avoir besoin de mapper une nouvelle entité appelée par exemple "OrderDetail"?
Ce n'est pas une réponse valide, mais ça marche si vous. Catégories var = product.Categories.ToList() Où (c => c.SomeProperty == someValue); – 4imble
Oui, mais NHibernate chargera la totalité de la collection à partir de la base de données, puis exécutera le filtre en utilisant LINQ to Objects. – StockBreak
À quoi ressemble votre méthode repository.Find (#)? – 4imble