SQLite EF コア データベース プロバイダーの制限事項SQLite EF Core Database Provider Limitations

SQLite プロバイダーでは、いくつかの移行の制限があります。The SQLite provider has a number of migrations limitations. これらの制限事項のほとんどは、基になる SQLite データベース エンジンの制限事項の結果、EF に限定されません。Most of these limitations are a result of limitations in the underlying SQLite database engine and are not specific to EF.

モデリングの制限事項Modeling limitations

(Entity Framework プロバイダーによって共有リレーショナル データベース) 共通のリレーショナル ライブラリは、モデリングの概念は、ほとんどのリレーショナル データベース エンジンに共通の Api を定義します。The common relational library (shared by Entity Framework relational database providers) defines APIs for modelling concepts that are common to most relational database engines. これらの概念のいくつかは、SQLite プロバイダーによってサポートされていません。A couple of these concepts are not supported by the SQLite provider.

  • スキーマSchemas
  • シーケンスSequences

移行の制限事項Migrations limitations

SQLite データベース エンジンは、多数の他のリレーショナル データベースの過半数によってサポートされているスキーマの操作をサポートしていません。The SQLite database engine does not support a number of schema operations that are supported by the majority of other relational databases. SQLite データベースにサポートされていない操作の 1 つを適用しようとするかどうか、NotSupportedExceptionがスローされます。If you attempt to apply one of the unsupported operations to a SQLite database then a NotSupportedException will be thrown.

操作Operation サポートされているか。Supported?
AddColumnAddColumn
AddForeignKeyAddForeignKey
AddPrimaryKeyAddPrimaryKey
AddUniqueConstraintAddUniqueConstraint
AlterColumnAlterColumn
CreateIndexCreateIndex
CreateTableCreateTable
DropColumnDropColumn
DropForeignKeyDropForeignKey
DropIndexDropIndex
DropPrimaryKeyDropPrimaryKey
DropTableDropTable
DropUniqueConstraintDropUniqueConstraint
Renamecolumn です。RenameColumn
RenameIndexRenameIndex
RenameTableRenameTable

移行の制限の回避策Migrations limitations workaround

回避策をいくつかを手動でテーブルを実行する、移行でコードを記述してこれらの制限を再構築します。You can workaround some of these limitations by manually writing code in your migrations to perform a table rebuild. テーブルを再構築では、既存のテーブルの名前を変更する、新しいテーブルを作成する、新しいテーブルにデータをコピーおよび古いテーブルを削除する必要があります。A table rebuild involves renaming the existing table, creating a new table, copying data to the new table, and dropping the old table. 使用する必要があります、Sql(string)メソッドを次の手順の一部を実行します。You will need to use the Sql(string) method to perform some of these steps.

参照してくださいその他の種類のテーブルのスキーマ変更を行う詳細については、SQLite ドキュメント。See Making Other Kinds Of Table Schema Changes in the SQLite documentation for more details.

将来的に、EF 可能性がありますサポートこれらの操作のいくつかのアプローチを使用して、テーブルの再構築は背後でします。In the future, EF may support some of these operations by using the table rebuild approach under the covers. 実行できます当社の GitHub プロジェクトでこの機能を追跡です。You can track this feature on our GitHub project.