NHibernate 3.0-当子查询未引入EXISTS时,只能在选择列表中指定一个表达式。”;
我们正在尝试升级到NHibernate 3.0,现在我对以下Linq查询有问题。它返回“当子查询没有引入EXISTS时,只能在选择列表中指定一个表达式。”错误 这是控制器中的linq查询NHibernate 3.0-当子查询未引入EXISTS时,只能在选择列表中指定一个表达式。”;,nhibernate,linq-to-nhibernate,Nhibernate,Linq To Nhibernate,我们正在尝试升级到NHibernate 3.0,现在我对以下Linq查询有问题。它返回“当子查询没有引入EXISTS时,只能在选择列表中指定一个表达式。”错误 这是控制器中的linq查询 var list = (from item in ItemTasks.FindTabbedOrDefault(tab) select new ItemSummary {
var list = (from item in ItemTasks.FindTabbedOrDefault(tab)
select new ItemSummary
{
Id = item.Id,
LastModifyDate = item.LastModifyDate,
Tags = (from tag in item.Tags
select new TagSummary
{
ItemsCount = tag.Items.Count,
Name = tag.Name
}).ToList(),
Title = item.Title
});
下面是为该查询生成的sql
select TOP ( 1 /* @p0 */ ) item0_.Id as col_0_0_,
item0_.LastModifyDate as col_1_0_,
(select (select cast(count(* ) as INT)
from dbo.ItemsToTags items3_,
dbo.Item item4_
where tag2_.Id = items3_.Tag_id
and items3_.Item_id = item4_.Id),
tag2_.Name
from dbo.ItemsToTags tags1_,
dbo.Tag tag2_
where item0_.Id = tags1_.Item_id
and tags1_.Tag_id = tag2_.Id) as col_2_0_,
item0_.Title as col_3_0_ from dbo.Item item0_ order by item0_.ItemPostDate desc
ps:如果我删除linq查询中的Tags属性,它就可以正常工作
查询中的问题在哪里
提前感谢。我得到了相同的通用ADO异常错误,我认为这实际上是SQL server的局限性; 是否可能以某种方式在集合中加载带有投影的对象图 如果我试试这个:
var cats = q.Select(t => new cat()
{
NickName = t.NickName,
Legs = t.Legs.Select(l => new Leg()
{
Color = l.Color,
Size = l.Size
}).ToList()
}).ToList();
这会产生相同的错误。您是如何在早期版本的NHibernate中编写此查询的?它填充了存储库的所有属性,如var list=ItemTasks.FindTabbedOrDefault(tab)。其中(x=>x.ItemPostDate=Datetime.today);