Olá, Higor.
Tudo bem?
Sim, é possível usar a mesma chave estrangeira em diferentes registros de despesa. Na verdade, isso é uma prática comum quando você tem uma categoria que pode ser associada a várias despesas.
No seu exemplo, você tem duas despesas que pertencem à mesma categoria (Alimentação, com CategoriaId
2):
{
"Descricao": "Sorvete",
"Valor": 4,
"Data": "2024-02-19T07:00:00",
"CategoriaId": 2
}
{
"Descricao": "Lanche",
"Valor": 45,
"Data": "2024-02-19T07:00:00",
"CategoriaId": 2
}
Isso deve funcionar sem problemas, desde que a chave estrangeira (CategoriaId
) esteja corretamente configurada no banco de dados e que a categoria com CategoriaId
2 exista.
O erro "Duplicate entry '2' for key" que você está recebendo pode estar relacionado a uma configuração incorreta da chave primária ou de índices únicos no banco de dados. Certifique-se de que a coluna CategoriaId
não está configurada como uma chave primária ou com uma restrição de unicidade.
Aqui está um exemplo de como poderia ser a configuração da entidade Despesa
e Categoria
no Entity Framework:
public class Despesa
{
public int Id { get; set; }
public string Descricao { get; set; }
public decimal Valor { get; set; }
public DateTime Data { get; set; }
public int CategoriaId { get; set; }
public Categoria Categoria { get; set; }
}
public class Categoria
{
public int Id { get; set; }
public string Nome { get; set; }
public ICollection<Despesa> Despesas { get; set; }
}
E no DbContext:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Despesa>()
.HasOne(d => d.Categoria)
.WithMany(c => c.Despesas)
.HasForeignKey(d => d.CategoriaId);
}
Essa configuração permite que múltiplas despesas sejam associadas a uma única categoria.
Veja se faz sentido. Qualquer dúvida manda aqui de novo.
Espero ter ajudado e bons estudos!