【问题标题】:How to Union two Queries in LINQ to Fluent NHibernate?如何将 LINQ 中的两个查询联合到 Fluent NHibernate?
【发布时间】:2014-01-28 08:56:50
【问题描述】:

如何将 LINQ 中的两个查询合并到 Fluent NHibernate?

它们返回相同的类型,但查询是针对不同的实体:

IQueryable<Event> eventQuery1 = session.Query<Event>().Where(e => e.EventType.Id == eventTypeId);

IQueryable<Event> eventQuery2 = session.Query<Nomination>().Select(n => n.Event).Distinct();

我尝试了 Union() 和 Concat() 方法,但都失败了:

eventQuery1 = eventQuery1.Union(eventQuery2);

The UnionResultOperator result operator is not current supported

我不想从数据库加载对象然后应用 concat,我希望在从数据库返回对象之前完成它,以便我可以在联合的最终列表中应用一些 Fetch。

【问题讨论】:

  • 希望this 示例有所帮助。
  • 我说我尝试了 Union() 和 Contact() 方法。 NHibernate 不支持它们。
  • 这不是重复的。我不想加载所有对象并在内存中进行联合!我想对 SQL 进行联合,然后加载对象(实现更好的性能)。

标签: sql linq nhibernate union fluent


【解决方案1】:

不确定它是否适用于 NHibernate LINQ,但解决方法是:

IQueryable<Event> eventQuery =
     session.Query<Event>()
            .Where(e => e.EventType.Id == eventTypeId
                     || session.Query<Nomination>()
                               .Select(n => n.Event.Id)
                               .Contains(e.Id))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    相关资源
    最近更新 更多