SQLite EF Core-Datenbank-Anbieter-EinschränkungenSQLite EF Core Database Provider Limitations

Der SQLite-Anbieter hat einige Einschränkungen für Migrationen.The SQLite provider has a number of migrations limitations. Die meisten dieser Einschränkungen sind ein Ergebnis von Einschränkungen in der zugrunde liegenden SQLite-Datenbank-Engine und sind nicht spezifisch für EF.Most of these limitations are a result of limitations in the underlying SQLite database engine and are not specific to EF.

ModellierungseinschränkungenModeling limitations

Die allgemeine relationale-Bibliothek, die (vom Anbieter für Entity Framework relationaler Datenbanken freigegeben) definiert die APIs für die Modellierung der Konzepte, die für die meisten relationalen Datenbank-Engines gelten.The common relational library (shared by Entity Framework relational database providers) defines APIs for modelling concepts that are common to most relational database engines. Eine Reihe von diese Konzepte werden von der SQLite-Anbieter nicht unterstützt.A couple of these concepts are not supported by the SQLite provider.

  • SchemataSchemas
  • SequenzenSequences

Einschränkungen für MigrationenMigrations limitations

Die SQLite-Datenbank-Engine unterstützt nicht mehrere Schemavorgänge, die von der Mehrheit der anderen relationalen Datenbanken unterstützt werden.The SQLite database engine does not support a number of schema operations that are supported by the majority of other relational databases. Wenn Sie versuchen, eine nicht unterstützte Vorgänge auf eine SQLite-Datenbank anwenden und dann eine NotSupportedException ausgelöst.If you attempt to apply one of the unsupported operations to a SQLite database then a NotSupportedException will be thrown.

VorgangOperation Unterstützt?Supported? Erfordert 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
"RenameColumn"RenameColumn
RenameIndexRenameIndex 2.12.1
RenameTableRenameTable 1.01.0
EnsureSchemaEnsureSchema ✔ (ohne-Op)✔ (no-op) 2.02.0
DropSchemaDropSchema ✔ (ohne-Op)✔ (no-op) 2.02.0
InsertInsert 2.02.0
UpdateUpdate 2.02.0
LöschenDelete 2.02.0

Migrationen Einschränkungen problemumgehungMigrations limitations workaround

Sie können einige umgehen dieser Einschränkungen durch Schreiben von Code manuell in Ihre Migrationen zu führen Sie eine Tabelle neu zu erstellen.You can workaround some of these limitations by manually writing code in your migrations to perform a table rebuild. Eine tabellenneuerstellung umfasst das Umbenennen der vorhandenen Tabelle, eine neue Tabelle erstellen, Kopieren von Daten in die neue Tabelle und löschen die alte Tabelle.A table rebuild involves renaming the existing table, creating a new table, copying data to the new table, and dropping the old table. Sie benötigen, verwenden Sie die Sql(string) Methode, um einige dieser Schritte durchzuführen.You will need to use the Sql(string) method to perform some of these steps.

Finden Sie unter machen andere Arten von Tabelle Schemaänderungen in der SQLite-Dokumentation für weitere Details.See Making Other Kinds Of Table Schema Changes in the SQLite documentation for more details.

In Zukunft EF einige dieser Operationen unterstützen möglicherweise mit den Ansatz mit Tabelle Neuerstellung im Hintergrund.In the future, EF may support some of these operations by using the table rebuild approach under the covers. Sie können verfolgen Sie dieses Feature auf unserem GitHub-Projekt.You can track this feature on our GitHub project.