SQLite EF Core Datenbank AnbietereinschränkungenSQLite EF Core Database Provider Limitations

Der SQLite-Anbieter hat einige Migrationen Einschränkungen.The SQLite provider has a number of migrations limitations. Die meisten dieser Einschränkungen sind Beschränkungen in der zugrunde liegende Datenbankmodul SQLite zurückzuführen 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.

Modellieren von EinschränkungenModeling limitations

Die allgemeine relationale Bibliothek (shared von Entity Framework, relationale Datenbank-Anbieter) definiert APIs für die Modellierung Konzepte, die für die meisten relationale Datenbankmodule 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 dieser Konzepte werden von der SQLite-Anbieter nicht unterstützt.A couple of these concepts are not supported by the SQLite provider.

  • SchemataSchemas
  • SequenzenSequences

Migrationen von EinschränkungenMigrations limitations

Die SQLite-Datenbank-Engine unterstützt nicht mehrere Schemavorgänge, die von der Mehrheit der andere 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, einen nicht unterstützten Vorgänge anwenden auf eine SQLite-Datenbank wird 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?
AddColumnAddColumn
AddForeignKeyAddForeignKey
AddPrimaryKeyAddPrimaryKey
AddUniqueConstraintAddUniqueConstraint
AlterColumnAlterColumn
CreateIndexCreateIndex
CreateTableCreateTable
DropColumnDropColumn
DropForeignKeyDropForeignKey
DropIndexDropIndex
DropPrimaryKeyDropPrimaryKey
DropTableDropTable
DropUniqueConstraintDropUniqueConstraint
"RenameColumn"RenameColumn
RenameIndexRenameIndex
RenameTableRenameTable

Migrationen Einschränkungen umgehenMigrations limitations workaround

Sie können einige umgehen dieser Einschränkungen durch Schreiben von Code manuell in Ihrer Migrationen, führen Sie eine Tabelle neu erstellen.You can workaround some of these limitations by manually writing code in your migrations to perform a table rebuild. Eine Neuerstellung der Tabelle 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 der folgenden Schritte ausfü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 Dokumentation SQLite Weitere Details.See Making Other Kinds Of Table Schema Changes in the SQLite documentation for more details.

In der Zukunft EF einige dieser Vorgänge unterstützen möglicherweise mit der Tabelle Rebuild Ansatz 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 diese Funktion auf unserer GitHub-Projekt.You can track this feature on our GitHub project.