Atualizar para @CodeNotFound a resposta de .
No EF Core 3.0 DbQuery<T>
foi preterido, você deve usar os tipos de entidade sem chave que supostamente fazem a mesma coisa. Eles são configurados com o HasNoKey()
método ModelBuilder . Na sua classe DbContext, faça isso
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Entity<YourEntityType>(eb =>
{
eb.HasNoKey();
});
}
Existem restrições, porém:
- Nunca são rastreados para alterações no DbContext e, portanto, nunca são inseridos, atualizados ou excluídos no banco de dados.
- Suporta apenas um subconjunto de recursos de mapeamento de navegação, especificamente:
- Eles podem nunca agir como o principal objetivo de um relacionamento.
- Eles podem não ter navegações para entidades próprias
- Eles podem conter apenas propriedades de navegação de referência apontando para entidades regulares.
- As entidades não podem conter propriedades de navegação para tipos de entidade sem chave.
Isso significa que, para a questão de
Se eu quiser usá-los e modificar dados, devo necessariamente adicionar uma PK a essas tabelas ou há uma solução alternativa para que eu não precise?
Você não pode modificar os dados dessa maneira - no entanto, pode ler. No entanto, pode-se imaginar usar outra maneira (por exemplo, ADO.NET, Dapper) para modificar dados - isso pode ser uma solução nos casos em que você raramente precisa executar operações de não leitura e ainda gostaria de usar o EF Core para os casos de maioria.
Além disso, se você realmente precisa / deseja trabalhar com tabelas de pilha (sem chave) - considere abandonar o EF e use outra maneira de conversar com seu banco de dados.