Преобразование оператора SQL с предложением «has» в Linq - PullRequest
1 голос
/ 01 декабря 2010

Я конвертировал свой ручной репозиторий SQL, который использует SqlCommand и SqlConnection, чтобы использовать EF4, и до сих пор так хорошо, что я застрял, пытаясь исправить оператор SQL как Linq.

Я пытался в течение некоторого времени, и я не получаю правильные результаты обратно, как при запуске самого запроса (также SQL, исходящий из EF4, ненормальный).

Вот запрос:

SELECT * FROM [Accounts] [a]
INNER JOIN (
 SELECT [a].[Id]
 FROM [Accounts] [a]
 INNER JOIN [People] [b] ON [a].[PersonId] = [b].[Id]
 INNER JOIN [Companies] [d] ON [b].[CompanyId] = [d].[Id]
 LEFT OUTER JOIN [AccountOrganizationalUnit] [c] ON [a].[Id] = [c].[AccountId]
 LEFT OUTER JOIN [OrganizationalUnits] [e] ON [c].[OrganizationalUnitId] = [e].[Id]
 WHERE [d].[GroupId] = @GroupId
 GROUP BY [a].[Id]
 HAVING SUM(CASE [e].[CompanyId] WHEN @CompanyId THEN 1 ELSE 0 END) = 0
) [t2] ON [a].[Id] = [t2].[Id]

Предложение «Имея» вызывает некоторые проблемы, так как я не могу заставить EF4 создавать похожий SQL. @GroupId - это Guid, а CompanyId - это int.

Спасибо за любую помощь / руководство относительно того, как я могу написать это в Linq! Если вам нужна дополнительная информация, просто дайте мне знать.

Приветствия

Ричард.

...