【问题标题】:fluent nhibernate outer join 2 query流畅的nhibernate外连接2查询
【发布时间】:2017-10-19 11:12:50
【问题描述】:

我正在使用 和 fluent (c#),我想做以下事情:

我有两个IQueryable 接口,relationsdocumentsrelations

relations 对象包含企业列表,documentsrelations 对象包含第二个企业列表。

我想生成一个新的企业列表,其中包含企业列表 (relations) 减去第二个企业列表 (documentsrelations)。

在 sql 中我会尝试使用外连接,但我不知道如何处理。

**** 声明 ****

IQueryable<EnterpriseRelation> documentsrelations = 
    shared_doc.SharedIn.AsQueryable();

var relations = EnterpriseRelationService
    .QueryRelationsForEnterprise(LoggedUser.ActiveAsEnterprise)
    .Where(x => x.ContactingEnterprise.NIF == LoggedUser.ActiveAsEnterprise.NIF);

relations 也是一个IQueryable&lt;EnterpriseRelation&gt;

我尝试了乘法,但它总是告诉我它不受支持。

一些帮助?

谢谢!

【问题讨论】:

  • 你应该展示你所尝试的。 Edit你的问题。

标签: linq-to-nhibernate c# linq nhibernate fluent linq-to-nhibernate


【解决方案1】:

假设您的实体主键是Id,您是否尝试过类似下面的操作?

var relations = EnterpriseRelationService
    .QueryRelationsForEnterprise(LoggedUser.ActiveAsEnterprise)
    .Where(x => x.ContactingEnterprise.NIF == LoggedUser.ActiveAsEnterprise.NIF)
    .Where(x => !documentsrelations.Select(dr => dr.Id).Contains(x.Id));

注意:

在您的问题中使用.AsQueryable() 通常是一个错误。如果SharedIn 实际上不是可查询的实例,它只会将其转换为可查询的 linq-to-object,在内存中执行,而不是在数据库中执行。对于您的情况,无论如何都不需要将其作为可查询的,至少在我上面的回答中,除非它已经是可查询的等待在 db 中执行。

如果我的回答失败,请在不使用 AsQueryable 呼叫 SharedIn 的情况下重试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-17
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2011-02-16
    • 1970-01-01
    相关资源
    最近更新 更多