我有一个包含两个类的模型:
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public List<Product> { get; set; }
}
public class Product
{
public string Name { get; set; }
public string Code { get; set; }
public decimal Amount { get; set; }
}
,在数据库中的两个不同表中表示。
如何使用QueryOver&lt;&gt;根据类别及其金额查询产品,最后选择产品。
在实体框架中,我会写一些类似的东西:
context.Categories.Where(s=>s.Id == @1)
.Select(s=>s.Products)
.Where(s=>s.Amount>12333).ToList();
OR
context.Products.Where(s=>s.**Category**.Id == @1 && s.Amount > 12333).ToList();
答案 0 :(得分:1)
首先,你应该(几乎必须)扩展从产品到类别的关系:
public class Product
{
...
public Category Category { get; set; }
它已经存在于DB中,因此没有理由将其隐藏在POCO实体中。
然后,如文档中所述:
我们可以这样做:
var results = session
// here we get query related to Product
.QueryOver<Product>()
// here we filter Product
.And(p => p.Amount > 12333)
// here we join the Category
.JoinQueryOver(p => p.Category)
// and do some farther filtering
.Where(c => c.Id == 1)
// list of products
.List<Product>()