2
我的应用程序中有一个实体框架4模型。我需要它来生成的SQL语句:如何为以下SQL编写实体框架4查询?
SELECT *
FROM Reads AS R
INNER JOIN Images AS I ON R.ReadId = I.ReadId AND I.ImageTypeId = 2
LEFT OUTER JOIN Alarms AS A ON R.ReadId = A.ReadId AND A.DomainId IN (103,102,101,2,1,12) AND A.i_active = 1
LEFT OUTER JOIN ListDetails AS L ON L.ListDetailId = A.ListDetailId
WHERE R.i_active = 1
这是我现在有这个查询在我的代码:
var items = from read in query
join plate in context.Images on read.ReadId equals plate.ReadId
join temp1 in context.Alarms on read.ReadId equals temp1.ReadId into alarms from alarm in alarms.DefaultIfEmpty()
join temp2 in context.ListDetails on alarm.ListDetailId equals temp2.ListDetailId into entries from entry in entries.DefaultIfEmpty()
where plate.ImageTypeId == 2 && plate.IActive == 1
select new { read, plate, alarm, entry.OfficerNotes };
如何修改实体框架查询来获取SQL查询,我需要?
谢谢!我对代码进行了这些更改,它们完美地工作!但是,我在域ID测试中使用了“Contains”。 – 2012-07-20 15:59:24
我会推荐使用Contains而不是Any。包含产生干净IN语句,而在任何产生可怕EXISTS(SELECT 1 AS [C1] FROM(SELECT ... 103 AS [C1] FROM(SELECT 1 AS X)AS [SingleRowTable1] UNION ALL SELECT 102 AS [C1] FROM( SELECT 1 AS X)AS [SingleRowTable2])AS [UnionAll1],其中[UnionAll1] [C1] = [Extent3] [域ID]) – Ruslan 2012-07-20 16:00:00
@Ruslan - 。在这种情况下,你可能是正确的 - 'Contains'更好。我喜欢用'Any',因为它允许更复杂的条件 – Aducci 2012-07-20 16:04:01