Необходимо объявить табличную переменную "@ p0" - PullRequest
0 голосов
/ 03 июня 2018

Я использую 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 Core2 с 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 Ответ

0 голосов
/ 04 июня 2018

Похоже, вам нужно передать хотя бы один параметр ExecuteSqlCommand, хотя мой запрос не использует никаких параметров.И раздражающим моментом является то, что он не жалуется во время компиляции.

//passing at least one parameter    
context.Database.ExecuteSqlCommand($"Delete from {tableName}",tableName); 

РЕДАКТИРОВАТЬ:

Сообщается о похожей проблемев GitHub и в настоящее время на рассмотрении: https://github.com/aspnet/EntityFrameworkCore/issues/10956

...