Выполнение запроса UPDATE - OUTPUT в EF Core 3.1

В EF Core 2 я мог обновлять и извлекать сущности в одном запросе, используя FromSql и выдавая UPDATE-OUTPUT запрос.

Выглядело это примерно так:

return await _baseDbContext.MyEntity
                           .FromSql($@"UPDATE {_baseDbContext.SchemaName}.MyEntity
                            SET STATUS = ""InProgress"",
                                UpdatedAt = SYSDATETIMEOFFSET()
                            OUTPUT
                                INSERTED.Id, INSERTED.Name,
                                INSERTED.Status, INSERTED.Deleted, INSERTED.CreatedAt, INSERTED.CreatedBy, INSERTED.CreatedByUserId,
                                INSERTED.UpdatedAt, INSERTED.UpdatedBy, INSERTED.UpdatedByUserId, INSERTED.Version
                            FROM { _baseDbContext.SchemaName}.MyEntity le
                            WHERE le.Status = ""Failed""")
                .ToListAsync(cancellationToken);

Теперь, после обновления до EF Core 3, он жалуется, что

«FromSqlRaw или FromSqlInterpolated был вызван с несоставным SQL и запросом, составляющим его. Рассмотрите возможность вызова AsEnumerable после метода FromSqlRaw или FromSqlInterpolated для выполнения композиции на стороне клиента.

Я могу выполнить FromSqlRaw или FromSqlInterpolated, если просто введу SELECT запрос.

EF core 3 больше не поддерживает UPDATE-OUTPUT запросы?


person roshan    schedule 20.05.2020    source источник
comment
что было бы проще закодировать фактический код вместо вывода, ну и то, и другое помогло бы   -  person Seabizkit    schedule 20.05.2020


Ответы (1)


Решил это, добавив .IgnoreQueryFilters() на основе ответа, опубликованного здесь: Включить с FromSqlRaw и хранимой процедурой в EF Core 3.1

person roshan    schedule 20.05.2020