我有两个表:tbA
和tbB
。在它们之间,我具有n到n的关系,因此tbAB
在数据库中生成了一个表。我先使用一个Entity Framework数据库,然后在映射这些表时,它不会为生成特定的实体tbAB
。因此,如果我不能直接调用,我将看不到如何创建与两个表相关的查询tbAB
。我想在SQL中做的事情如下:
SELECT *
FROM tbA
INNER JOIN tbAB
ON tbAB.idA = tbA.idA
INNER JOIN tbB
ON tbB.idB = tbAB.idB
这就是我要对Linq进行的操作:
var table = (from l in db.tbA
join k in db.tbB on l.? equals k.?
where ?.IDCONCESSAO == objectTbB.IDCONCESSAO
select l).ToList();
问题是如何在Linq表达式中执行此操作?
提前致谢。
按照@Michal提出的模型,您可以执行以下操作:
var query= from a in db.TableAs
from b in a.TableBs
where b.Id==10
select new{A_Id=a.Id,a.Name, B_Id=b.Id,b.Price,...};
在中,select
您可以从两个实体中选择所需的属性(我也选择一个Name
fromTableA
和一个Price
fromTableB
以帮助您更好地理解此示例)。从关系的每个方向,您都不会与联结表进行交互,而只是遵循每个方向的关系,就好像一对多。我上面显示的查询将转换为sql查询,其中将以这种方式在表之间进行联接:
{SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Name] AS [Name],
[Join1].[Id] AS [Id1],
[Join1].[Price] AS [Price]
FROM [dbo].[TableAs] AS [Extent1]
INNER JOIN (SELECT [Extent2].[TableA_Id] AS [TableA_Id], [Extent3].[Id] AS [Id], [Extent3].[Price] AS [Price]
FROM [dbo].[TableBTableAs] AS [Extent2]
INNER JOIN [dbo].[TableBs] AS [Extent3] ON [Extent3].[Id] = [Extent2].[TableB_Id] ) AS [Join1] ON [Extent1].[Id] = [Join1].[TableA_Id]
WHERE 10 = [Join1].[Id]}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句