Я конвертировал свой ручной репозиторий 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! Если вам нужна дополнительная информация, просто дайте мне знать.
Приветствия
Ричард.