Присоединяйтесь к подколке в EF CoreC#

Место общения программистов C#
Ответить
Anonymous
 Присоединяйтесь к подколке в EF Core

Сообщение Anonymous »

Goal: I want to select the latest versioned records of a given table:



id
version
name

< /thead>


1 < /td>
0 < /td>
alek < /td>
< /tr>

1 < /td>
1
1

1 < /td> /> alex < /td>
< /tr>

2 < /td>
0 < /td>
bob < /td>
< /tr>
< /tbode>
< /table> < /div>
mote: /br /br /> < /table> < /div>

В идеале это то, что я хочу, чтобы ef core генерировал с использованием CTE's: < /p>
WITH cte (Id, Version) AS
(
SELECT
Id, MAX(Version)
FROM
Table
GROUP BY
Id
)
SELECT a.*
FROM Table a
JOIN cte ON a.Id = cte.Id AND cte.Version = e.Version;
< /code>
Примечание: вот альтернативный, но эквивалентный запрос, если выше невозможно в EF Core: < /p>
SELECT a.*
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY Id ORDER BY Version DESC) rn
FROM Table a
WHERE redacted
) a
WHERE a.rn = 1;
< /code>
c# query linq: < /p>
var query = (from a in context.Test
join j in (from m in context.Test
group m by m.Id
into g
select new { g.Key, Version = g.Max(x => x.Version) })
on new { a.Id, a.Version } equals new { Id = j.Key, j.Version } into gj
select a).ToQueryString();

проблема : фактический сгенерированный запрос SQL полностью пропускает Sun-Query:
SELECT [a].[Id], [a].[Version]
FROM [Employer] AS [e]

Обновление 2024 на основе https://stackoverflow.com/users/14868997/charlieface
Работое решение:



Подробнее здесь: https://stackoverflow.com/questions/774 ... in-ef-core
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»