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コードを拡大し、今では私のデータベース
の両方のために働きます
最初に、列名の引用符を削除します。 – sle1306
SQLはMS SQLを意味しますか?バックアップを作成し、すべての移行を削除しようとします。新しい移行を追加し、空のデータベースを更新します。また、マイグレーションコード – itikhomi
@ sle1306を提供してください。columnname1の近くに不正な構文があります。 –