左连接,返回第一个表中的所有列

时间:2011-04-09 15:39:34

标签: c# entity-framework

现在,对于LEFT JOIN,我使用“Include”:

var items = (from item in Content.Entity1.Include("Entity2")
            select new { Value1 = item.Col1, Value2 = item.Col1, ...., Value3 = item.TheReference.Col1});

当第一个实体中有许多列需要输入时,会出现问题。

是否有可能从第一个实体和第二个实体的特定列返回所有列?

1 个答案:

答案 0 :(得分:1)

只需将左侧实体作为单独的实体返回,然后添加您想要的其他实体:

from item in Content.Entity1.Include("Entity2")
select new { Left = item, Right = item.TheReference.Col1 };

使用T4

如果您的代码是通用的并且逐个实体重复,那么我想您可以编写一个T4模板来为您生成这些LINQ。但这意味着应该通过模板变量以某种方式提供那些自定义正确的实体列。

因此。创建一个ttinclude文件,然后 N tt文件,您可以在其中设置其他变量值并引用ttinclude生成器模板。

但除了这两个(和你的手写专栏写)之外,别无其他。