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

Dostawca bazy danych SQLite ma różne ograniczenia migracji.The SQLite provider has a number of migrations limitations. Większość tych ograniczeń wyniku ograniczenia w podstawowej bazy danych SQLite i nie są specyficzne dla 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ólna biblioteka relacyjnych (udostępniony 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 tych pojęć nie są obsługiwane przez dostawcę 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 wielu 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 dotyczą jednej z nieobsługiwanej operacji bazy danych SQLite, a następnie NotSupportedException zostanie wygenerowany.If you attempt to apply one of the unsupported operations to a SQLite database then a NotSupportedException will be thrown.

OperacjaOperation Obsługiwane?Supported?
AddColumnAddColumn
AddForeignKeyAddForeignKey
AddPrimaryKeyAddPrimaryKey
AddUniqueConstraintAddUniqueConstraint
AlterColumnAlterColumn
CreateIndexCreateIndex
CreateTableCreateTable
DropColumnDropColumn
DropForeignKeyDropForeignKey
DropIndexDropIndex
DropPrimaryKeyDropPrimaryKey
DropTableDropTable
DropUniqueConstraintDropUniqueConstraint
RenameColumnRenameColumn
RenameIndexRenameIndex
RenameTableRenameTable

Obejście ograniczenia dotyczące migracjiMigrations limitations workaround

Niektóre można obejść tych ograniczeń ręcznie pisanie kodu w migracji do wykonania tabeli odbudować.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ącego tabeli, tworzy nową tabelę kopiowanie danych do nowej tabeli i usunięcie starej tabeli.A table rebuild involves renaming the existing table, creating a new table, copying data to the new table, and dropping the old table. Będą musieli używać Sql(string) metody do wykonania niektórych 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 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 może obsługiwać niektóre z tych operacji przy użyciu podejścia Odbuduj tabelę w obszarze obejmuje.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 naszym projektu GitHub.You can track this feature on our GitHub project.