Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Estou tentando adicionar um objeto numa tabela utilizando EF Core,

Estou tentando adicionar dados numa tabela utilizando EF Core através do método:

public void Adicionar(T objeto) { context.Set().Add(objeto); context.SaveChanges(); }

CREATE TABLE dbo.[TB_XPTO]( Id INT IDENTITY(1,1) PRIMARY KEY ,nome VARCHAR(255) NULL )

E retorna o seguinte erro:

'The entity type 'XPTO' requires a primary key to be defined. If you intended to use a keyless entity type, call 'HasNoKey' in 'OnModelCreating'.

Já inseri o atributo Id com a chave [key] e mesmo assim não funciona.

2 respostas
solução!

Olá, Diego.

Tudo bem?

O erro que você está recebendo indica que o EF Core não está conseguindo identificar a chave primária da entidade 'XPTO'. Mesmo que você tenha definido o atributo Id com a chave [key], o EF Core pode não estar reconhecendo isso.

Uma possível solução seria garantir que a classe 'XPTO' esteja definida corretamente. No EF Core, você precisa usar o atributo [Key] ou a convenção de nomenclatura 'Id' para que o EF Core reconheça a propriedade como chave primária. Aqui está um exemplo de como a classe 'XPTO' poderia ser definida:

public class XPTO
{
    [Key]
    public int Id { get; set; }
    public string Nome { get; set; }
}

Neste exemplo, a propriedade 'Id' é marcada com o atributo [Key], indicando que é a chave primária da entidade 'XPTO'.

Além disso, é importante garantir que o contexto do banco de dados esteja ciente da entidade 'XPTO'. Isso normalmente é feito no método 'OnModelCreating' do contexto do banco de dados ou definindo uma propriedade DbSet para a entidade. Aqui está um exemplo de como isso pode ser feito:

public class SeuDbContext : DbContext
{
    public DbSet<XPTO> XPTOs { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<XPTO>().HasKey(x => x.Id);
    }
}

Neste exemplo, a entidade 'XPTO' é registrada no contexto do banco de dados através da propriedade DbSet 'XPTOs'. Além disso, no método 'OnModelCreating', a chave primária da entidade 'XPTO' é explicitamente definida.

Espero que isso ajude a resolver o problema que você está enfrentando. Se o erro persistir, por favor, compartilhe mais detalhes sobre como você está definindo e registrando a entidade 'XPTO' e como está tentando adicionar a entidade ao banco de dados.

Espero ter ajudado e bons estudos!

Após definir a chave primária explicitamente no método 'OnModelCreating' conforme mencionado, resolvi meu problema.

Muito obrigado!!