Nhibernate: нет персистента для: System.Collections.Generic.List

Любые идеи, почему я могу получить исключение «Нет персистента для: System.Collections.Generic.List» при выполнении запроса ниже?

       var subs = new List<Subsection>();

        var subsections = Session.QueryOver<Subsection>()
                            .WhereRestrictionOn(s => s.Id)
                            .IsInG(subsectionIds)
                            .List<Subsection>();

        Location foreignExpertLocation = null;

        var result = Session.QueryOver<InternationalLawyerExpertise>()
            .JoinAlias(i => i.ForeignExpertLocation, () => foreignExpertLocation)
            .JoinAlias(() => foreignExpertLocation.Subsections, () => subs)
            .AndRestrictionOn(() => subs).IsInG(subsections)
            .Where(i => i.ForeignExpertLocation == location && i.Status.Id == _confirmed)
            .Fetch(lawyer => lawyer.PersonOrganisation.Person).Eager
            .Fetch(lawyer => lawyer.PersonOrganisation.Organisation).Eager
            .List<InternationalLawyerExpertise>();
        return result;

person Chirdeep Tomar    schedule 18.01.2013    source источник


Ответы (1)


Скорее всего, проблема связана с тем, как вы создаете subsections "подзапрос". Попробуйте проверить этот ответ: https://stackoverflow.com/a/14080092/1679310

ПРИМЕЧАНИЕ. Отсутствует ваше сопоставление и определение классов, поэтому примите это как "как сделать" на основе вашего фрагмента. Вы должны создать отдельный запрос:

var subQuery = QueryOver.Of<<Subsection>()
  .WhereRestrictionOn(s => s.Id)
    .IsInG(subsectionIds)
  .Select((s) => s.ID); // ID projection

а затем используйте его:

var result = Session.QueryOver<InternationalLawyerExpertise>()
   ...
   .Where(Subqueries.PropertyIn("SubsectionID", subQuery.DetachedCriteria))

Таким образом, вы можете напрямую в одном фильтре выбора с внутренним выбором (затем NHibernate введет подвыборку в ваш основной запрос).

... или предоставьте дополнительные сведения о сопоставлении..

person Radim Köhler    schedule 18.01.2013
comment
Я неправильно сопоставлял некоторые таблицы, но, по сути, ваше решение сработало. - person Chirdeep Tomar; 23.01.2013