Limitações do provedor de banco de dados SQLite EF CoreSQLite EF Core Database Provider Limitations

O provedor SQLite tem uma série de limitações de migrações.The SQLite provider has a number of migrations limitations. A maioria dessas limitações é o resultado das limitações no mecanismo de banco de dados subjacente do SQLite e não é específicas ao EF.Most of these limitations are a result of limitations in the underlying SQLite database engine and are not specific to EF.

Limitações de modelagemModeling limitations

A biblioteca de relacional comuns (compartilhada pelos provedores de banco de dados relacional do Entity Framework) define as APIs de modelagem de conceitos que são comuns a maioria dos mecanismos de banco de dados relacional.The common relational library (shared by Entity Framework relational database providers) defines APIs for modelling concepts that are common to most relational database engines. Alguns desses conceitos não são suportados pelo provedor SQLite.A couple of these concepts are not supported by the SQLite provider.

  • EsquemasSchemas
  • SequênciasSequences

Limitações de migraçõesMigrations limitations

O mecanismo de banco de dados SQLite não oferece suporte a um número de operações de esquema que são compatíveis com a maioria dos outros bancos de dados relacionais.The SQLite database engine does not support a number of schema operations that are supported by the majority of other relational databases. Se você tentar aplicar uma das operações sem suporte a um banco de dados SQLite, um NotSupportedException será lançada.If you attempt to apply one of the unsupported operations to a SQLite database then a NotSupportedException will be thrown.

OperaçãoOperation Suporte?Supported? Requer a versãoRequires 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 ✔ (não operacional)✔ (no-op) 2.02.0
DropSchemaDropSchema ✔ (não operacional)✔ (no-op) 2.02.0
InserirInsert 2.02.0
AtualizaçãoUpdate 2.02.0
ExcluirDelete 2.02.0

Solução alternativa de limitações de migraçõesMigrations limitations workaround

É possível solucionar algumas dessas limitações manualmente escrevendo código em suas migrações para realizar uma tabela de recompilar.You can workaround some of these limitations by manually writing code in your migrations to perform a table rebuild. Uma recriação de tabela envolve a renomeação da tabela existente, criando uma nova tabela, a cópia de dados para a nova tabela e descartar a tabela antiga.A table rebuild involves renaming the existing table, creating a new table, copying data to the new table, and dropping the old table. Você precisará usar o Sql(string) método para executar algumas dessas etapas.You will need to use the Sql(string) method to perform some of these steps.

Ver fazer outros tipos de alteração de esquema na documentação do SQLite para obter mais detalhes.See Making Other Kinds Of Table Schema Changes in the SQLite documentation for more details.

No futuro, o EF pode dar suporte a algumas dessas operações usando a abordagem de recriação de tabela nos bastidores.In the future, EF may support some of these operations by using the table rebuild approach under the covers. Você pode controlar esse recurso em nosso projeto GitHub.You can track this feature on our GitHub project.