using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Runtime.Serialization; using System.Threading.Tasks;
namespace CasaDoCodigo.Models { [DataContract] public abstract class BaseModel { [DataMember] public int Id { get; protected set; } }
public class Produto : BaseModel
{
public Produto()
{
}
[Required]
public string Codigo { get; private set; }
[Required]
public string Nome { get; private set; }
[Required]
public decimal Preco { get; private set; }
public Produto(string codigo, string nome, decimal preco)
{
this.Codigo = codigo;
this.Nome = nome;
this.Preco = preco;
}
}
public class Cadastro : BaseModel
{
public Cadastro()
{
}
public virtual Pedido Pedido { get; set; }
[Required]
public string Nome { get; set; } = "";
[Required]
public string Email { get; set; } = "";
[Required]
public string Telefone { get; set; } = "";
[Required]
public string Endereco { get; set; } = "";
[Required]
public string Complemento { get; set; } = "";
[Required]
public string Bairro { get; set; } = "";
[Required]
public string Municipio { get; set; } = "";
[Required]
public string UF { get; set; } = "";
[Required]
public string CEP { get; set; } = "";
}
public class ItemPedido : BaseModel
{
[Required]
public Pedido Pedido { get; private set; }
[Required]
public Produto Produto { get; private set; }
[Required]
public int Quantidade { get; private set; }
[Required]
public decimal PrecoUnitario { get; private set; }
public ItemPedido()
{
}
public ItemPedido(Pedido pedido, Produto produto, int quantidade, decimal precoUnitario)
{
Pedido = pedido;
Produto = produto;
Quantidade = quantidade;
PrecoUnitario = precoUnitario;
}
}
public class Pedido : BaseModel
{
public Pedido()
{
Cadastro = new Cadastro();
}
public Pedido(Cadastro cadastro)
{
Cadastro = cadastro;
}
public List<ItemPedido> Itens { get; private set; } = new List<ItemPedido>();
[Required]
public virtual Cadastro Cadastro { get; private set; }
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Produtos>().HasKey(t => t.Id);
modelBuilder.Entity<Pedidos>().HasKey(t => t.Id);
modelBuilder.Entity<Pedidos>().HasMany(t => t.Itens).WithOne(t => t.Pedido);
modelBuilder.Entity<Pedidos>().HasOne(t => t.Cadastro).WithOne(t => t.Pedido).IsRequired();
modelBuilder.Entity<ItemPedidos>().HasKey(t => t.Id);
modelBuilder.Entity<ItemPedidos>().HasOne(t => t.Pedido);
modelBuilder.Entity<ItemPedidos>().HasOne(t => t.Produto);
modelBuilder.Entity<Cadastros>().HasKey(t => t.Id);
modelBuilder.Entity<Cadastros>().HasOne(t => t.Pedido);
}
public Context(DbContextOptions options): base(options) { // Database.EnsureCreated(); }
Fiz esatamente a mesma coisa que o instrutor faz no curso mas o meu da esse erro, quando eu faso o comando Add-Migration Inicial "Nome da migration (Inicial)"
The child/dependent side could not be determined for the one-to-one relationship between 'Pedidos.Cadastro' and 'Cadastros.Pedido'. To identify the child/dependent side of the relationship, configure the foreign key property. If these navigations should not be part of the same relationship configure them without specifying the inverse. See http://go.microsoft.com/fwlink/?LinkId=724062 for more details.