我正在尝试在Entity Framework Core中执行原始SQL代码,但它返回以下错误:
System.Data.SqlClient.SqlException:'无效的对象名''MyTempTable'。'
我尝试运行以下命令,都失败了:
dbContext.Database.ExecuteSqlCommand(@"INSERT INTO #MyTempTable (BatchId, RowId) VALUES (1,1)");
dbContext.Database.ExecuteSqlCommand(@"INSERT INTO dbo.#MyTempTable (BatchId, RowId) VALUES (1,1)");
如果我直接从SSMS运行它们,这两个命令都可以正常工作。
我做错了什么?
答案 0 :(得分:2)
INSERT INTO语句要求目标表存在 在您的代码上下文中,这是错误的,您会收到错误 当创建临时表的连接关闭时,它将被删除,因此EF完全可能关闭了创建临时表的点与尝试使用它的点之间的连接。
如果没有更多的上下文来理解代码流,您可以将查询编写为
select 1 as BatchID, 1 as RowID INTO #MyTempTable
MSDN上还有this document暗示可以在EF dbContext下手动打开和关闭连接