Limites du fournisseur de base de données SQLite EF CoreSQLite EF Core Database Provider Limitations

Le fournisseur de SQLite a un nombre de limitations des migrations.The SQLite provider has a number of migrations limitations. La plupart de ces limitations est le résultat des limitations dans le moteur de base de données SQLite sous-jacent et n’est pas spécifique à EF.Most of these limitations are a result of limitations in the underlying SQLite database engine and are not specific to EF.

Limitations de modélisationModeling limitations

La bibliothèque de relationnelle commune (partagée par les fournisseurs de base de données relationnelle d’Entity Framework) définit des API pour la modélisation des concepts qui sont communes à la plupart des moteurs de base de données relationnelle.The common relational library (shared by Entity Framework relational database providers) defines APIs for modelling concepts that are common to most relational database engines. Plusieurs de ces concepts ne sont pas pris en charge par le fournisseur de SQLite.A couple of these concepts are not supported by the SQLite provider.

  • SchémasSchemas
  • SéquencesSequences

Limitations de migrationMigrations limitations

Le moteur de base de données SQLite ne prend pas en charge un nombre d’opérations de schéma qui sont pris en charge par la plupart des autres bases de données relationnelles.The SQLite database engine does not support a number of schema operations that are supported by the majority of other relational databases. Si vous essayez d’appliquer l’une des opérations non prises en charge pour une base de données SQLite un NotSupportedException sera levée.If you attempt to apply one of the unsupported operations to a SQLite database then a NotSupportedException will be thrown.

OpérationOperation Prise en charge ?Supported? Requiert la versionRequires version
AddColumnAddColumn 1.01.0
AddForeignKeyAddForeignKey
AddPrimaryKeyAddPrimaryKey
AddUniqueConstraintAddUniqueConstraint
AlterColumnAlterColumn
CreateIndexCreateIndex 1.01.0
CreateTableCreateTable 1.01.0
DropColumnDropColumn
DropForeignKeyDropForeignKey
DropIndexDropIndex 1.01.0
DropPrimaryKeyDropPrimaryKey
DropTableDropTable 1.01.0
DropUniqueConstraintDropUniqueConstraint
RenameColumnRenameColumn
RenameIndexRenameIndex 2.12.1
RenameTableRenameTable 1.01.0
EnsureSchemaEnsureSchema ✔ (nulle)✔ (no-op) 2.02.0
DropSchemaDropSchema ✔ (nulle)✔ (no-op) 2.02.0
InsertInsert 2.02.0
Mise à jourUpdate 2.02.0
SupprimerDelete 2.02.0

Solution de contournement migrations limitationsMigrations limitations workaround

Vous pouvez contourner certaines de ces limitations en écrivant du code dans vos migrations pour effectuer une table manuellement régénérer.You can workaround some of these limitations by manually writing code in your migrations to perform a table rebuild. Une régénération de la table implique la modification du nom de la table existante, créez une table, copie de données vers la nouvelle table et la suppression de l’ancienne table.A table rebuild involves renaming the existing table, creating a new table, copying data to the new table, and dropping the old table. Vous devez utiliser le Sql(string) méthode pour effectuer certaines de ces étapes.You will need to use the Sql(string) method to perform some of these steps.

Consultez rendre autres types de Table de modifications de schéma dans la documentation de SQLite pour plus de détails.See Making Other Kinds Of Table Schema Changes in the SQLite documentation for more details.

À l’avenir, EF peut prendre en charge certaines de ces opérations à l’aide de l’approche de reconstruction de table en arrière-plan.In the future, EF may support some of these operations by using the table rebuild approach under the covers. Vous pouvez suivre cette fonctionnalité sur notre projet GitHub.You can track this feature on our GitHub project.