ダッパ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文を削除すると、TestDBテーブルが作成されていないため、Postを作成するときにエラーが発生します。

Dapperを使ってこれを解決する方法はありますか?

SQL Server SDKを使用してのみこれを実行できました。

受け入れられた回答

ダッパーはここであなたを助けることはできません。 SQL Server Management Objectsを使用して、前述のような大きなSQLコマンドを実行することをお勧めします。そしてそれはGOステートメントをサポートしています。

このブログの記事で 、ステップバイステップの手順を確認できます。


人気のある回答

GOは単なるバッチ・セパレータであるSQL文ではありませんが、実際には名前を任意に変更できます。

バッチセパレーター

Management Studioがこれを理解する方法は、SQLを解析することです。文をチャンクすることができる簡単なパーサを書くのは簡単です。文字列を "GO"に分割し、それぞれの文をDapperに送ります。

しかし、100%正確であるためには、 洗練されたパーサが必要です。

select '
GO ' GO from [GO] 


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ