我有以下的(非常簡化的)域:查詢NHibernate的屬性與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; }
}
的許多一對多收集使用下面的XML映射:
<bag name="Categories" table="ProductsCategories">
<key column="ProductID" />
<many-to-many column="CategoryID" class="Category" />
</bag>
當我'使用產品屬性加載我的類別全部工作正常:
Product product = ProductRepository.Find(1);
var categories = product.Categories;
的問題是,當我嘗試過濾我的收藏,比如:
Product product = ProductRepository.Find(1);
var categories = product.Categories.Where(c => c.SomeProperty == someValue);
查詢是不對數據庫執行,但它使用LINQ到對象篩選的結果!是否有可能在不使用HQL的情況下解決這個問題,也不需要映射一個名爲「OrderDetail」的新實體?
這不是一個有效的答案,但如果你做它的工作原理:VAR類= product.Categories.ToList()將(C => c.SomeProperty == someValue中); – 4imble
是的,但NHibernate會從數據庫加載整個集合,然後它將使用LINQ to Objects來執行過濾器。 – StockBreak
你的repository.Find(#)方法是什麼樣的? – 4imble