必须声明表变量“@ p0”

时间:2018-06-03 19:08:16

标签: asp.net-core-2.0 entity-framework-core-2.1

我正在使用select SUBSTR(column_name, 1, 300) || ',' || SUBSTR(column_name, 301) from table_name ; 实体框架核心来删除表的所有行。 但是,我收到错误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
 }

我正在使用带有EntityFrameworkCore的.NET Core 2

我安装了以下nuget包:

ExecuteDeleteSQL(context, "[dbo].[ShoppingCartItems]");

1 个答案:

答案 0 :(得分:1)

好像你必须将至少一个参数传递给ExecuteSqlCommand,即使我的查询没有使用任何参数。 令人讨厌的是它在编译期间没有抱怨。

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

<强> 编辑:

在GitHub中报告了一个类似的问题,目前正在考虑中: https://github.com/aspnet/EntityFrameworkCore/issues/10956