我需要帮助:我需要与3个表进行连接,但其中一个表没有被实体框架映射,因为它只是一个关系表,我需要的连接是这样的:
select *
from Promocao p
join ProdutoPromocao as pp on pp.PromocaoId = p.IdPromocao
join Produto as pr on pp.ProdutoId = pr.IdProduto
join Boteco as b on pr.botecoId = b.IdBoteco
where b.IdBoteco = 1
但未映射表ProdutoPromocao
,如何使用Entity Framework执行此操作?
我想到了类似的东西:
(from pr in db.Promocao
join p in db.Produto on (pr.Produto.Select(x=>x.IdProduto)) equals p.IdProduto //this line is not working, I would need something like pr.Produto.IdProduto but it does not offer me this alternative
join b in db.Boteco on p.BotecoId equals b.IdBoteco
where b.IdBoteco == idBoteco
select pr
).ToList();
有人请帮帮我。
答案 0 :(得分:1)
您可以尝试如下所示。
(from pr in db.Promocao
join p in db.Produto on (pr.Produto.Select(x=>x.IdProduto).FirstOrDefault()) equals p.IdProduto
join b in db.Boteco on p.BotecoId equals b.IdBoteco
where b.IdBoteco == idBoteco
select pr
).ToList();
答案 1 :(得分:1)
使用EF时,不需要(在某些情况下,您不能使用手动连接)。拥有导航属性后,您只需要使用它们(就像它们是对象一样),EF将为您生成必要的连接。
您的查询应该是这样的:
from pr in db.Promocao
from p in pr.Produto
let b = p.Boteco
... (the rest)