代码之家  ›  专栏  ›  技术社区  ›  Ben Gribaudo

“无法实例化”NHibernate.QueryException由组合的Linq查询引发

  •  0
  • Ben Gribaudo  · 技术社区  · 14 年前

    执行下面的NHibernate.Linq语句将引发 "could not instantiate: Reservation001.Services.ReservationDto"

    var inOneStep = (from r in session.Linq<Models.ReservationHeader>()
        select new ReservationDto(r.Current));
    return inOneStep;
    

    但是,在将上述内容拆分为两个查询后,如果对第一个查询的结果调用ToList(),则代码执行得很好。

    var step1 = (from r in session.Linq<Models.ReservationHeader>()
         select r).ToList();
    var step2 = from z in step1
         select new ReservationDto(z.Current);
    return step2;
    

    为什么单语句版本会引发异常?


    1 回复  |  直到 14 年前
        1
  •  0
  •   Nathan    14 年前

    第一个查询不起作用的原因是整个查询都被发送到NHibernate,并且(正如异常告诉您的)NHibernate希望reservationdt的内容是可转换的。

    没有 包括ReservationDto和返回对象集合。然后,您的第二步只是在对象集合上操作,由于不再涉及NHibernate,因此可以避免错误。

    http://devlicio.us/blogs/derik_whittaker/archive/2008/04/07/linq-and-delayed-execution.aspx