NHibernate 3.0 - только одно выражение может быть указано в списке выбора, когда подзапрос не введен с EXISTS. " - PullRequest
0 голосов
/ 07 марта 2011

Мы пытаемся перейти на NHibernate 3.0, и теперь у меня проблема со следующим запросом Linq. Он возвращает «Только одно выражение может быть указано в списке выбора, когда подзапрос не введен с EXISTS». ошибка.

Это запрос linq в контроллере.

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: если я удаляю свойство Tags в запросе linq, оно работает нормально.

Где проблема в запросе?

Заранее спасибо.

1 Ответ

0 голосов
/ 14 июля 2011

У меня та же ошибка Generic ADO Exception, я думаю, что это ограничение SQL-сервера; Можно ли как-то загрузить граф объектов с проекциями в коллекции?

Если я попробую это:

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();

Это делает ту же ошибку ..

...