Необходимо объявить табличную переменную "@p0"
Я использую ExecuteSqlCommand
ядра структуры сущности, чтобы удалить все строки таблицы. Однако я получаю ошибку System.Data.SqlClient.SqlException: 'Must declare the table variable "@p0".'
Вот мой код:
public static void ExecuteDeleteSQL(ShoppingCartDbContext context, string tableName)
{
context.Database.ExecuteSqlCommand($"Delete from {tableName}"); //This line throws the error
}
Это называется здесь:
ExecuteDeleteSQL(context, "[dbo].[ShoppingCartItems]");
Я использую.NET Core 2 с EntityFrameworkCore
Я установил следующие пакеты nuget:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.1.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
1 ответ
Похоже, вам нужно передать хотя бы один параметр ExecuteSqlCommand
хотя мой запрос не использует никаких параметров. И раздражает то, что он не жалуется во время компиляции.
//passing at least one parameter
context.Database.ExecuteSqlCommand($"Delete from {tableName}",tableName);
РЕДАКТИРОВАТЬ:
В GitHub есть похожая проблема, которая в настоящее время рассматривается: https://github.com/aspnet/EntityFrameworkCore/issues/10956