Ograniczenia dotyczące dostawcy bazy danych SQLite EF CoreSQLite EF Core Database Provider Limitations

Dostawca bazy danych SQLite ma kilka ograniczeń migracji.The SQLite provider has a number of migrations limitations. Większość z tych ograniczeń są wynikiem ograniczenia podstawowego aparatu bazy danych SQLite i nie są specyficzne dla platformy EF.Most of these limitations are a result of limitations in the underlying SQLite database engine and are not specific to EF.

Ograniczenia modelowaniaModeling limitations

Wspólne biblioteki relacyjnych (udostępnione przez dostawców relacyjnej bazy danych programu Entity Framework) definiuje interfejsów API do modelowania pojęcia, które są wspólne dla większości relacyjnych baz danych.The common relational library (shared by Entity Framework relational database providers) defines APIs for modelling concepts that are common to most relational database engines. Kilka z tych koncepcji nie są obsługiwane przez dostawcę bazy danych SQLite.A couple of these concepts are not supported by the SQLite provider.

  • SchematySchemas
  • SekwencjeSequences

Ograniczenia migracjiMigrations limitations

Aparat bazy danych SQLite nie obsługuje szereg operacji schematu, które są obsługiwane przez większość innych relacyjnych baz danych.The SQLite database engine does not support a number of schema operations that are supported by the majority of other relational databases. Jeśli spróbujesz zastosować jedną nieobsługiwane operacje do bazy danych SQLite, a następnie NotSupportedException zostanie zgłoszony.If you attempt to apply one of the unsupported operations to a SQLite database then a NotSupportedException will be thrown.

OperacjaOperation Obsługiwane?Supported? Wymaga wersjiRequires 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 ✔ (pusta)✔ (no-op) 2.02.0
DropSchemaDropSchema ✔ (pusta)✔ (no-op) 2.02.0
InsertInsert 2.02.0
AktualizacjaUpdate 2.02.0
UsuwanieDelete 2.02.0

Obejście ograniczenia dotyczące migracjiMigrations limitations workaround

Można obejść niektóre z tych ograniczeń, ręcznie wpisując kod w migracji do wykonania tabeli ponownie skompilować.You can workaround some of these limitations by manually writing code in your migrations to perform a table rebuild. Odbuduj tabelę obejmuje zmianę nazwy istniejącej tabeli, tworzenie nowej tabeli, kopiowanie danych do nowej tabeli i usunięcie starych tabeli.A table rebuild involves renaming the existing table, creating a new table, copying data to the new table, and dropping the old table. Należy użyć Sql(string) metodę, aby wykonać niektóre z tych kroków.You will need to use the Sql(string) method to perform some of these steps.

Zobacz co inne rodzaje z zmiany schematu tabeli w dokumentacji oprogramowania SQLite, aby uzyskać więcej informacji.See Making Other Kinds Of Table Schema Changes in the SQLite documentation for more details.

W przyszłości EF mogą obsługiwać kilku z tych operacji przy użyciu podejścia Odbuduj tabelę w sposób niewidoczny.In the future, EF may support some of these operations by using the table rebuild approach under the covers. Możesz śledzenie tej funkcji w projekcie usługi GitHub.You can track this feature on our GitHub project.