2017-07-04 7 views
0

Coretrue for SQLiteでいくつかのマイグレーションを実行しましたが、SQLiteからSQLに切り替えようとしました。c#EFコアマイグレーションコード最初の無効な列

私は "System.Data.SqlClient.SqlException(0x80131904):無効なcolumnname1 'columnname1'を取得しました。無効なcolumnname2 'columnname2'。" - 既存のSQLステートメントでの例外。 SQLiteの下

migrationBuilder.Sql("INSERT INTO tablename ('columnname1', 'columnname2 ') VALUES ('columnname1value','columnname2value')"); 

のようなものを使用して

それが正常に動作します。

"dbo"を追加しようとしました。SQLとSQLiteの命名方法が異なるため、Tablenameにプレフィックスが追加されました。同じエラー。ため、私は、テーブルの作成後に移行してSQL-ステートメントを区切るしようとしたスクリプトで定義されたテーブルは、DB

で作成されていない文に

。定義されたテーブルは作成されますが、同じエラーです。

シードを作成することはオプションではありません。一部の移行では、私は更新または削除ステートメントを使用するためです。

私の声明に何が間違っていましたか?それは構文か論理的な問題か、それともいつも間違っていたのですが、SQLiteの下で動作するのは幸運でした。同じ問題を持つすべての他の男とレディースのためにあなたの答え

ため

感謝。ここに私のソリューション:

sle1306右のヒントを得た。 構文エラーの削除 引用符を大括弧に変更します。それはSQLiteのとMS SQLで作業を取得するには

: すべてのテーブル/へ

Id = table.Column<int>(nullable: false) .Annotation("Autoincrement", true).Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), 

Id = table.Column<int>(nullable: false) .Annotation("Autoincrement", true) 

にSQLiteのためのgenertatedコードを拡大し、今では私のデータベース

の両方のために働きます
+0

最初に、列名の引用符を削除します。 – sle1306

+0

SQLはMS SQLを意味しますか?バックアップを作成し、すべての移行を削除しようとします。新しい移行を追加し、空のデータベースを更新します。また、マイグレーションコード – itikhomi

+0

@ sle1306を提供してください。columnname1の近くに不正な構文があります。 –

答えて

0

同じ問題を抱えているすべての他の男と女性のために。ここで私の解決策:

sle1306は右のヒントを得た。構文の削除 - エラー引用符を大括弧に変更します。

それはSQLiteのとMS SQLで作業を取得するには、次のすべてのテーブル/へ

Id = table.Column<int>(nullable: false) .Annotation("Autoincrement", true).Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn), 

Id = table.Column<int>(nullable: false) .Annotation("Autoincrement", true) 

にSQLiteのためのgenertatedコードを拡大し、今では私のデータベース

の両方のために働きます
関連する問題