C# 使用实体框架合并两个表
我有以下疑问:C# 使用实体框架合并两个表,c#,sql,entity-framework,lambda,entity-framework-5,C#,Sql,Entity Framework,Lambda,Entity Framework 5,我有以下疑问: { SELECT A.Id, C1.FullName AS APerson, C2.FullName As BPerson FROM TableA AS A LEFT JOIN TableC AS C1 ON A.FK_PersonA = C1.Id LEFT JOIN TableC AS C2 ON A.FK_PersonB = C2.Id UNION SELECT B.Id, B.FullName1 AS APerson, B.FullName2 AS B
{
SELECT A.Id, C1.FullName AS APerson, C2.FullName As BPerson
FROM TableA AS A
LEFT JOIN TableC AS C1 ON A.FK_PersonA = C1.Id
LEFT JOIN TableC AS C2 ON A.FK_PersonB = C2.Id
UNION
SELECT B.Id, B.FullName1 AS APerson, B.FullName2 AS BPerson
FROM TableB AS B
}
我想将其转换为实体框架lambda查询,这可能吗
数据模型
首先,您应该为您的模型创建存储库。读一下这个。 因此,您可以使用:
var ret =
(from taRec in TableA.GetAll()
join tc1 in TableC.GetAll on taRec.FK_PersonA equals tc1.Id
into tcRecs1
from tcRec1 in tcRecs1.DefaultIfEmpty()
join tc2 in TableC.GetAll on taRec.FK_PersonB equals tc2.Id
into tcRecs2
from tcRec2 in tcRecs2.DefaultIfEmpty()
select new {
taRec.Id, APerson = tcRec1.FullName, BPerson = tcRec2.FullName
}).Union(
from tbRec in TableB.GetAll()
select new {
tbRec.Id, APerson = tbRec.FullName, BPerson = tbRec.FullName
});
是的,有可能。但是,首先格式化您的sql代码,并显示您的模型。这是可能的。你做了什么努力?代码优先还是edmx?我使用的是从数据库派生的edmx(DB优先方法)。不确定如何格式化SF上的查询,这对SF来说是新的。更新了Format。处理模型。@Alexander根据您的注释更新了问题。winform软件存储库模式没有预先计划,因此我无法更改。使用另一种模式,我向您演示了如何使用linq查询。在您的描述中,没有关于使用的模式和EF模型的信息。我使用的是实体框架和基于lambda的查询,这在我的问题中已经说明。我没有使用任何其他模式。我想我可以将您提供的内容转换为基于EF lambda的查询。在这个问题上,这太过分了。实体框架有存储库,它们被称为DbSet。