Model-First Entity Designer SQL ファイルを C# で実行する方法をいくつか試しましたが、うまくいきませんでした。ロードして読み取るすべてのコードを含む SQL ファイルがあります。
以下は私のコードです。実行されたすべてのコマンドでエラーが発生します。タイプ であるモデル コンテナの接続プロパティを介して接続を取得していることに注意してください。ただしDbConnection
、それと関係があるかどうかはわかりません。
C# スクリプト:
var commandStrings = Regex.Split(Resources.DatabaseScript, "^\\s*GO\\s*$", RegexOptions.Multiline);
//container is my EDMX container.
container.Connection.Open();
var command = container.Connection.CreateCommand();
var transaction = container.Connection.BeginTransaction();
command.Connection = container.Connection;
command.Transaction = transaction;
foreach (string commandInput in commandStrings)
{
var commandString = commandInput;
if (commandString.Trim() != "")
{
Debug.Write("Executing SQL ... ");
try
{
command.CommandText = commandString;
command.Connection = container.Connection;
command.CommandType = CommandType.Text;
command.Prepare();
command.ExecuteNonQuery();
Debug.WriteLine("Success!");
}
catch (Exception exc)
{
Debug.WriteLine("Failed!");
Debug.WriteLine("Exception: " + exc.Message);
Debug.Write("Rolling back ... ");
try
{
transaction.Rollback();
Debug.WriteLine("Success!");
} catch(Exception exce)
{
Debug.WriteLine("Exception: " + exce.Message);
}
}
finally
{
Debug.WriteLine("SQL: " + commandString);
}
}
}
transaction.Commit();
container.Connection.Close();
受信したエラー。私が受け取っているエラーのいくつかは次のとおりです。
エラー 1:
IF OBJECT_ID(N'[dbo].[FK_UserStory]', 'F') IS NOT NULL
ALTER TABLE [dbo].[StorySet] DROP CONSTRAINT [FK_UserStory];
クエリ構文が無効です。識別子「OBJECT_ID」の近く、1 行目、4 列目。
エラー 2:
IF SCHEMA_ID(N'dbo') IS NULL EXECUTE(N'CREATE SCHEMA [dbo]');
クエリ構文が無効です。識別子「SCHEMA_ID」の近く、1 行目、4 列目。