【问题标题】:Left Join 1 to 1/0 with llblgen?Left Join 1 to 1/0 with llblgen?
【发布时间】:2013-08-11 17:53:52
【问题描述】:

使用 EF,如果您在选择投影中导航到单个相关实体(例如从多对一或 1 对 1/0 的多侧),它将合并空值并给您一个左加入:https://stackoverflow.com/a/2525950/84206

由于它发生在项目中而不是连接中,EF 做出了一个非常合理的假设,即需要左连接。 但是,我还没有找到在 LINQ 中使用 LLBLGen 完成此任务的方法。上述技术使用 LLBGen 生成内部连接。我不能使用使用 DefaultIfEmpty 的技术,因为它仅在导航到多关系时可用。

我希望避免使用 WithPath/Prefetch,因为我真的很想在 LINQ 中进行投影,而不是将巨大的对象图抓取到内存中并在内存中进行投影。

这是 LLBLGen 3.5。

【问题讨论】:

    标签: linq llblgenpro


    【解决方案1】:

    如果 FK 可以为空,则连接将是左连接。如果 FK 不可为空,则它将是内部联接。这是确定您想要什么的唯一方法,因为 Linq 缺少任何其他系统来指定其中的连接类型。您的链接也必须使用可为空(可选)的 FK 端才能获得左连接。

    如果没有任何帮助,请使用 queryspec,查询 api 将允许您在任何情况下指定连接类型。

    ps:请下次在我们的论坛发帖,我们不会每天监控 SO,但我们会监控我们的论坛。

    【讨论】:

    • 在我的情况下,它没有按预期工作,因为它是一个 1 对 1/0 的共享主键关系。所以源 PK/FK 是不可为空的,并且可能触发了“如果 FK 不可为空,它将是一个内部连接”。即使它是基于其他实体存在的可选关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2015-04-02
    • 2011-01-30
    • 2011-10-16
    • 2017-02-26
    • 2021-06-11
    相关资源
    最近更新 更多