Перейти к содержанию

EntityFramework

Раздел в разработке [15.02.2021]

Не ставить ; при выполнении собственных запросов средствами EF.

При использовании методов DbSet<T>.FromSqlRaw() и DbSet<T>.FromSqlInterpolated() в передаваемых им SQL запросах нельзя использовать ; в конце запроса.

var entity = await context.MyEntities
    .FromSqlRaw("SELECT table.* FROM table WHERE table.column > {0}", filteringArg)
    .OrderBy(x => x.Created)
    .ToListAsync();

Почему: EF использует переданный SQL запрос в качестве вложенного и формирует запрос вида SELECT table.* FROM (YOUR_RAW_QUERY) WHERE ... ORDER BY ..., и если в конце вложенного запроса поставить ;, то можно долго искать ошибку синтаксиса.