Fala ai professor na aula de como criar um banco de dados e muito bom porem eu queria ver como criar esse modela do zero sem copiar e colar. Poderia me ajuar?
`
Fala ai professor na aula de como criar um banco de dados e muito bom porem eu queria ver como criar esse modela do zero sem copiar e colar. Poderia me ajuar?
`
algum dia o professor vai responder eu creio!
Opa, tudo bom Felipe?
Então, não sou professor, mas gostaria de deixar minha opinião, talvez lhe ajude.
Bem, como sabemos, o Entity Framework (EF) surgiu para que a modelagem de banco de dados fosse facilmente implementada via aplicação. Ou seja, acredito que a direção que o curso de MVC com EF Core seja direcionado a utilização dessa ferramenta na aplicação.
Você pode aprender utilizar o EF6 e o EF Core pelo próprio site da Microsoft, através do link:
https://docs.microsoft.com/pt-br/ef/core/
Agora, caso esteja procurando como é que se criam as tabelas, campos e relacionamentos. Recomendo verificar a sessão de Infraestrutura nos cursos de bancos de dados.
Espero ter contribuído.
até mais.
Oi Filipe, tudo bem?
Então vamos lá: Considerando que cada entidade é descrita como abaixo:
Com base nessas informações, dá pra montar uma classe para cada entidade.
Cada entidade terá um grupo de propriedades, sendo que os Ids são numéricos (tipo int
, mas também poderia ser long
).
Os valores do tipo moeda são declarados sempre com o tipo decimal
, pois é um tipo numérico de ponto flutuante de maior precisão, e com representação decimal, o que evita problemas de arredondamento de dígitos decimais.
Como cada entidade tem uma propriedade chamada Id, o Entity Framework automaticamente pressupõe que essa propriedade é a chave primária da tabela gerada no processo "model-first".
Para evitar duplicação de código, movemos a propriedade Id
para uma classe base abstrata, e fazemos com que cada entidade herde dessa classe.
Cada classe tem um construtor vazio e um outro construtor com os parâmetros mapeados para as propriedades. Isso facilita a inicialização dos objetos das classes.
Alguns campos (muitos, na verdade) possuem um atributo [Required]
, instruindo o Entity Framework a criar esses campos como "obrigatórios". Assim, esses campos não permitirão valores nulos, protegendo a integridade dos nossos dados.
Alguns campos são do tipo de alguma outra classe do modelo. Isso é feito para estabelecer um relacionamento entre as tabelas (e entidades) quando as tabelas forem geradas a partir do modelo:
public class Cadastro : BaseModel
{
...
public virtual Pedido Pedido { get; set; }
public class ItemPedido : BaseModel
{
...
[Required]
public Pedido Pedido { get; private set; }
[Required]
public Produto Produto { get; private set; }
...
public class Pedido : BaseModel
{
[Required]
public virtual Cadastro Cadastro { get; private set; }
}
[CONTINUA...]
[CONTINUAÇÃO...] Acho que é isso. O modelo é bastante simples, para não termos muita complicação na hora de desenvolver o app com ASP.NET Core e Entity Framework Core.
[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; }
}
Tudo começa com as ideias. Para criar um modelo do zero, comece descrevendo as especificações do seu domínio, isto é, que entidades e valores são necessários para o início do seu projeto. Adapte as ideias para modelar as classes. Crie uma migração inicial, como fizemos no curso, e depois vá incrementando o modelo e as migrações adicionais conforme seu projeto vai crescendo.
Você pode também assistir o curso do prof. Daniel Portugal da Alura, que explica bem melhor sobre a criação de modelos, tabelas e relacionamentos com o Entity Framework Core:
https://www.alura.com.br/curso-online-entity-framework-core
Qualquer dúvida, por favor me avise. Um abraço!