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 de 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-jacente 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 la modélisationModeling limitations

La bibliothèque commune de relationnelle (partagée par les fournisseurs de base de données relationnelle d’Entity Framework) définit les 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. Deux de ces concepts ne sont pas pris en charge par le fournisseur SQLite.A couple of these concepts are not supported by the SQLite provider.

  • SchémasSchemas
  • SéquencesSequences

Limitations de migrationsMigrations 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 majorité 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 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
Create tableCreateTable 1.01.0
DropColumnDropColumn
DropForeignKeyDropForeignKey
DROP indexDropIndex 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 reconstruction de la table implique la modification du nom de la table existante, créer une nouvelle table, copie de données vers la nouvelle table et supprimer 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 d’informations.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.