Esse é o trecho que está causando esse erro:
modelBuilder.Entity<Pedido>().HasKey(t => t.Id).HasMany(t => t.Itens).WithOne(t => t.Pedido);
Esse é o trecho que está causando esse erro:
modelBuilder.Entity<Pedido>().HasKey(t => t.Id).HasMany(t => t.Itens).WithOne(t => t.Pedido);
Olá Fabiano, como vai?
Pelo erro me parece que você está utilizando em algum lugar do código a classe KeyBuilder
. Acredito que possa ser neste trecho do código protected override void OnModelCreating(ModelBuilder modelBuilder)
.
Se puder compartilhar a classe intera para darmos uma olhada, iremos te auxiliar melhor.
Aguardo retorno.
Abraços
Isso mesmo Ana, segue abaixo a classe completa:
using CasaDoCodigo.Models;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace CasaDoCodigo
{
public class ApplicationContext: DbContext
{
public ApplicationContext(DbContextOptions options): base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Produto>().HasKey(t => t.Id);
modelBuilder.Entity<Pedido>().HasKey(t => t.Id);
modelBuilder.Entity<Pedido>().HasKey(t => t.Id).HasMany(t => t.Itens).WithOne(t => t.Pedido);
modelBuilder.Entity<Pedido>().HasOne(t => t.Cadastro).WithOne(t => t.Pedido).IsRequired();
modelBuilder.Entity<ItemPedido>().HasKey(t => t.Id);
modelBuilder.Entity<ItemPedido>().HasOne(t => t.Pedido);
modelBuilder.Entity<ItemPedido>().HasOne(t => t.Produto);
modelBuilder.Entity<Cadastro>().HasKey(t => t.Id);
modelBuilder.Entity<Cadastro>().HasOne(t => t.Pedido);
}
}
}
Oi Fabiano,
Entendi o problema. Usamos o HasKey
para definir nossa chave, geralmente um ID
. Acredito que ele esteja "sobrando" em seu código, já que definimos ele na primeira linha. Acredito que deixando sem o HasKey
, conseguirmos fazer o código funcionar. Veja:
modelBuilder.Entity<Pedido>().HasMany(t => t.Itens).WithOne(t => t.Pedido);
A classe inteira deve estar assim:
using CasaDoCodigo.Models;
using JetBrains.Annotations;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace CasaDoCodigo
{
public class ApplicationContext : DbContext
{
public ApplicationContext(DbContextOptions options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Produto>().HasKey(t => t.Id);
modelBuilder.Entity<Pedido>().HasKey(t => t.Id);
modelBuilder.Entity<Pedido>().HasMany(t => t.Itens).WithOne(t => t.Pedido);
modelBuilder.Entity<Pedido>().HasOne(t => t.Cadastro).WithOne(t => t.Pedido).IsRequired();
modelBuilder.Entity<ItemPedido>().HasKey(t => t.Id);
modelBuilder.Entity<ItemPedido>().HasOne(t => t.Pedido);
modelBuilder.Entity<ItemPedido>().HasOne(t => t.Produto);
modelBuilder.Entity<Cadastro>().HasKey(t => t.Id);
modelBuilder.Entity<Cadastro>().HasOne(t => t.Pedido);
}
}
}
Espero ter ajudado.
Abraços
Era isso mesmo, obrigado mais uma vez Ana.