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

O provedor do SQLite tem várias limitações de migrações.The SQLite provider has a number of migrations limitations. A maioria dessas limitações é o resultado das limitações do mecanismo de banco de dados SQLite subjacente 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 por provedores de banco de dados relacional do Entity Framework) define APIs de modelagem 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 do 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 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 para 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 Com suporte?Supported?
AddColumnAddColumn
AddForeignKeyAddForeignKey
AddPrimaryKeyAddPrimaryKey
AddUniqueConstraintAddUniqueConstraint
AlterColumnAlterColumn
CreateIndexCreateIndex
CreateTableCreateTable
DropColumnDropColumn
DropForeignKeyDropForeignKey
DropIndexDropIndex
DropPrimaryKeyDropPrimaryKey
DropTableDropTable
DropUniqueConstraintDropUniqueConstraint
RenameColumnRenameColumn
RenameIndexRenameIndex
RenameTableRenameTable

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

Você pode solucionar esse problema algumas dessas limitações manualmente escrevendo código em seu migrações para executar 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 renomear a tabela existente, criando uma nova tabela, copiando 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.

Consulte 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, 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.