【问题标题】:Nhibernate query over休眠查询结束
【发布时间】:2012-07-31 20:44:14
【问题描述】:

我试图用这样的代码从我的表中只选择一些字段

IList<Product> res = sess.QueryOver<Product>()            
             .Select(x =>x.name)           
             .List<Product>();

此代码没有错误,但在运行时我得到这个:“无法执行查找 [SQL:SQL 不可用]”值“Prod1 不是 SympleFlhLINQ.Product 类型,并且不能用于此通用集合”。

如果有人告诉我如何只获取产品名称和引用的类别名称宽度,那就太好了

 IList<Product> res = sess.QueryOver<Product>() 
                .Select(x =>x.name)
                .Select(x=>x.Cat.CategoryName)
                .List<Product>();

【问题讨论】:

  • 您需要IList&lt;Product&gt; 还是可以使用 DTO?
  • DTO 你的意思是使用公共类 ProductCollection 之类的类型:List { }??

标签: nhibernate queryover


【解决方案1】:
IList<string> names = sess.QueryOver<Product>()            
         .Select(x =>x.Name)
         .List<string>();

ProductDto product = null;
Category category = null;
IList<ProductDto> res = sess.QueryOver<Product>()
    .JoinAlias(x => x.Category, () => category)
    .SelectList(list => list
        .Select(x => x.Name).WithAlias(() => product.Name)
        .Select(() => category.Name).WithAlias(() => product.CategoryName))
    .TransformUsing(Transformers.AliasToBean<ProductDto>())
    .List<ProductDto>();

【讨论】:

  • 我是 stackoverflow 的新手,我不知道如何接受答案,哈哈。对不起
猜你喜欢
  • 1970-01-01
  • 2011-08-09
  • 2017-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多