小巧玲瓏。使用GO執行查詢

dapper sql

我試圖使用Dapper運行SQL查詢:

use master
go

if exists (select name from sys.databases where name = N'TestDB')
drop database [TestDB]
go

create database [TestDB] on primary ( 
  name = 'TestDB_Data',
  filename = '$Path\TestDB_Data.mdf',
  size = 40MB,
  maxsize = 2GB,
  filegrowth = 20MB 
)

use [TestDB]
go

create table dbo.Posts
(
  Id int identity not null,
  Body nvarchar (max) null
);

我使用Dapper如下:

using (SqlConnection connection = new SqlConnection(connectionString)) {
  connection.Open();
  connection.Execute(sqlQuery);
}

但是,使用GO時出錯。

但是,如果我刪除GO語句,則在創建Posts時會出現錯誤,因為未創建表TestDB。

有沒有辦法使用Dapper來解決這個問題?

我只能使用SQL Server SDK完成此操作。

一般承認的答案

Dapper在這裡幫不了你。相反,我建議你嘗試SQL Server管理對象來執行像你提到的那樣的大SQL命令。它確實支持GO語句。

您可以查看此博客文章以獲取分步說明。


熱門答案

GO不是一個SQL語句,它只是一個批處理分隔符,實際上你可以將它重命名為你想要的任何東西。

批量分離器

Management Studio解決這個問題的方法是解析SQL。編寫一個可以將語句組合起來的簡單解析器很容易。只需將字符串拆分為“GO”並將每個語句發送給Dapper。

但是,要100%正確,您需要一個複雜的解析器

select '
GO ' GO from [GO] 


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow