Não estou conseguindo dar Update-Database, e pelo que estudei parece estar tudo correto, mas quando tento executar o comando este erro aparece "Foreign key 'FK_Venda_Produto_Produtos_ProdutoID' references invalid column 'ProdutoID' in referenced table 'Produtos'."
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Estatiticum.Dados
{
public class Produto
{
public int ID { get; set; }
public double Valor { get; set; }
public string NomeProduto { get; set; }
public int CodProduto { get; set; }
public int Quantidade { get; set; }
public IList<VendaProduto> VendidoProduto { get; set; }
public Produto()
{
VendidoProduto = new List<VendaProduto>();
}
public override string ToString()
{
return $"Produto {NomeProduto} Cod do produto {CodProduto} Quantidade{Quantidade} Valor{Valor}";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Estatiticum.Dados
{
public class Venda
{
public int ID { get; set; }
public string NomeComprador { get; set; }
public string Bairro { get; set; }
public string Residencia { get; set; }
public double ValorCompra { get; set; }
public int QuantidadeProdutos { get; set; }
public string NomeProd { get; set; }
public IList<VendaProduto> ProdutosVendidos { get; set; }
public Venda()
{
ProdutosVendidos = new List<VendaProduto>();
}
public override string ToString()
{
return $"Comprador {NomeComprador} Comprou {QuantidadeProdutos} produto(s) {NomeProd} no valor de {ValorCompra}";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Estatiticum.Dados
{
public class VendaProduto
{
public Produto produto { get; set; }
public Venda venda { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Estatiticum.Dados;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace Estatiticum.Configurations
{
public class ProdutoConfiguration : IEntityTypeConfiguration<Produto>
{
public void Configure(EntityTypeBuilder<Produto> builder)
{
builder
.ToTable("Produtos");
builder
.Property(P => P.ID)
.HasColumnName("ProdutoID")
.IsRequired();
builder
.Property(p => p.Valor)
.HasColumnName("Valor_produto")
.IsRequired();
builder
.Property(p => p.CodProduto)
.HasColumnName("Codigo_do_produto")
.IsRequired();
builder
.Property(p => p.NomeProduto)
.HasColumnName("Nome_do_produto")
.HasColumnType("varchar(100)")
.IsRequired();
builder
.HasAlternateKey(p => p.CodProduto);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Estatiticum.Dados;
using Microsoft.EntityFrameworkCore;
namespace Estatiticum.Configurations
{
public class VendaProdutoConfiguration : IEntityTypeConfiguration<VendaProduto>
{
public void Configure(Microsoft.EntityFrameworkCore.Metadata.Builders.EntityTypeBuilder<VendaProduto> builder)
{
builder
.ToTable("Venda_Produto");
builder
.Property<int>("VendaID")
.IsRequired();
builder
.Property<int>("ProdutoID")
.IsRequired();
builder
.Property<DateTime>("data_venda")
.HasDefaultValueSql("getdate()")
.HasColumnType("datetime")
.IsRequired();
builder
.HasKey("VendaID", "ProdutoID");
builder
.HasOne(vp => vp.produto)
.WithMany(p => p.VendidoProduto)
.HasForeignKey("ProdutoID");
builder
.HasOne(vp => vp.venda)
.WithMany(v => v.ProdutosVendidos)
.HasForeignKey("VendaID");
}
}
}