Ситуация следующая: 1. Товар принадлежит многим категориям, 2. Категория имеет много товаров.
class Product
{
public int Id { get; set; }
public List<Category> Categories { get; set; }
}
class Category
{
public int Id { get; set; }
public List<Product> Products { get; set; }
}
Как получить все товары, где каждый из них относится к категории с id = 2 и3 и 4. Как сделать с queryover?На данный момент я использую динамически создаваемый hql:
select p from Product p where
exists (select c.id from p.Categories c where c.Id = 2)
and exists (select c.id from p.Categories c where c.Id = 3)
and exists (select c.id from p.Categories c where c.Id = 4)
И отображение:
public class ProductMap : ClassMap<Product>
{
public ProductMap()
{
Id(x => x.Id);
HasManyToMany(x => x.Categories)
.Table("product_category")
.ParentKeyColumn("product_id")
.ChildKeyColumn("category_id");
}
}
public class CategoryMap : ClassMap<Category>
{
public CategoryMap()
{
Id(x => x.Id);
HasManyToMany(x => x.Products)
.Table("product_category")
.ParentKeyColumn("category_id")
.ChildKeyColumn("product_id");
}
}