Я пытаюсь использовать EF Core 3 для удаления всех строк из таблицы, например:
db.MyTable.ExecuteSqlRaw("delete from MyTable;");
Но я получаю сообщение об ошибке:
DbSet 'не содержитопределение 'ExecuteSqlRaw' и недоступный метод расширения 'ExecuteSqlRaw', принимающий первый аргумент типа 'DbSet', может быть найден (вам не хватает директивы using или ссылки на сборку?)
MicrosoftСтраница критических изменений для EF Core 3 не дает никаких советов, если для этого необходимы специальные пакеты:
https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/breaking-changes#fromsql-executesql-and-executesqlasync-have-been-renamed
Это установленные мной пакеты Nuget:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.2" />
<PackageReference Include="System.Linq" Version="4.3.0" />
<PackageReference Include="System.Linq.Expressions" Version="4.3.0" />
<PackageReference Include="System.Linq.Queryable" Version="4.3.0" />
Использование операторов:
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
Обратите внимание, что FromSqlRaw
доступно, но ExecuteSqlRaw
, ExecuteSqlRawAsync
и т. Д. Нет.
EDIT : я добавил using Microsoft.EntityFrameworkCore
, и ошибка изменилась на:
«DbSet» не содержит определения для «ExecuteSqlRaw» и лучшей перегрузки метода расширения «RelationalDatabaseFacadeExtensions.ExecuteSqlRaw (DatabaseFacade,строка, params объект [])это приемник типа 'DatabaseFacade'