Jump to content
  • 0
caiiovox

[RESOLVIDO] Migrations .NET

Question

Olá galera do iMasters, meu primeiro post aqui, e começo com uma dúvida minha (:

Seguinte, tenho umas dúvida com relação ao .net, porém devo levantar alguns pontos aqui.

Estou estudando asp.net mvc pelo material do Eduardo Pires, muito bom por sinal, vi as vídeo aulas e fiz minhas anotações e agora estou fazendo outro exemplo diferente das video aulas para aprender por conta própria.

 

Não sei se minha lógica está certa, pois é meu primeiro projeto caminhando sozinho apenas com minhas anotações que fiz.
Quero criar uma agendinha simples, onde eu possuo um contato, esse contato ele pode ter N aparelhos, e esse aparelho pode ter N chips(Sim) e esses chips podem ter N números. Como podem ver nas fotos.

Nas vídeo aulas ele faz um exemplo de Clientes e Endereços, essas são as entidades que ele relacionou, porém agora eu quero relacionar 3 entidades como podem ver, independente da minha lógica estar meio errada, eu quero aprender como vai funcionar as relações com 3 entidades aplicadas no exemplo que ele ensinou.

- Problema 1: Um amigo me mostrou a propriedade enum, porém não estou conseguindo trabalhar com ela, eu precisava associar os números ao chip que eu quiser.

- Problema 2: Eu tenho uma classe AgendaMvcContext que está na minha camada de Domínio, e eu preciso usar os Migrations, porém quando vou no package manager console digitar enable-migrations ela retorna essa mensagem, que deu a entender que a minha classe de Numero não tem uma PK. Porém eu usei a propriedade Guid para identificar que o TelNumeros é uma PK.

- Problema 3: o Enable-Migrations deve ser usado no PCM com o projeto Infra.Data selecionado em sua caixa correto ? Pois o Migrations trabalha com o banco de dados correto ?

Será que o problema 2 está ligado ao problema um por conta de não conseguir trabalhar com o enum ? Aos C# neteiros, poderiam me ajudar ? Obrigado desde já.

Segue a mensagem do PCM caso não consiga visualizar:
One or more validation errors were detected during model generation:

CL.AgendaMvc.Infra.Data.Context.Numero: : EntityType 'Numero' has no key defined. Define the key for this EntityType.
TipoSim: EntityType: EntitySet 'TipoSim' is based on type 'Numero' that has no keys defined.

IMASTER1.jpg

imaster2.jpg

imaster3.jpg

imaster4.jpg

Share this post


Link to post
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Na entidade 'Numero', crie uma propriedade chamanda 'NumeroId', essa pode ser do tipo Guid, e 'TelNumero' pode ser string, se for salvar com máscara, também precisa do 'AparelhoId'.

Share this post


Link to post
Share on other sites
  • 0
1 hora atrás, itlpps disse:

Na entidade 'Numero', crie uma propriedade chamanda 'NumeroId', essa pode ser do tipo Guid, e 'TelNumero' pode ser string, se for salvar com máscara, também precisa do 'AparelhoId'.

Valeu cara ! E sobre o Migrations ? Eu utilizo ele na camada de Data mesmo correto ?

Share this post


Link to post
Share on other sites
  • 0
2 minutos atrás, caiiovox disse:

Valeu cara ! E sobre o Migrations ? Eu utilizo ele na camada de Data mesmo correto ?

Usa na camada que faz acesso ao banco, junto com a classe de contexto, no seu caso, junto com AgendaMvcContext.

 

Geralmente usa projetos diferentes para cada camada... Não sei como está sua arquitetura. rs

Share this post


Link to post
Share on other sites
  • 0
2 minutos atrás, itlpps disse:

Usa na camada que faz acesso ao banco, junto com a classe de contexto, no seu caso, junto com AgendaMvcContext.

 

Geralmente usa projetos diferentes para cada camada... Não sei como está sua arquitetura. rs

Sim, cada projeto está em uma camada diferente.

E mesmo assim está dando aquele erro, porém se eu digitar apenas enable-migration o console diz que já está habilitado, e se eu digitar enable-migration -force ele alega que minha entidade Numero não tem uma chave primária.

Share this post


Link to post
Share on other sites
  • 0
5 minutos atrás, caiiovox disse:

Sim, cada projeto está em uma camada diferente.

E mesmo assim está dando aquele erro, porém se eu digitar apenas enable-migration o console diz que já está habilitado, e se eu digitar enable-migration -force ele alega que minha entidade Numero não tem uma chave primária.

Então, como disse antes, crie uma 'NumeroId' na entidade Numero, assim o migration entende que isso é uma primary key.

Share this post


Link to post
Share on other sites
  • 0

Não bro kk

Numero id = NumeroId

public Guid NumeroId { get; set; }

E o id do aparelho também

public Guid AparelhoId { get; set; }

 

Share this post


Link to post
Share on other sites
  • 0

Isso. 

Tem que ter AparelhoId nos dois, pro migration fazer o mapeamento e criar chave estrangeira na entidade Numero.

Share this post


Link to post
Share on other sites
  • 0

Ahh, então ele vai mapear a entidade de Número, ver que a PK é o NumeroId, assim como nas outras entidades, na entidade por exemplo Aparelho é o AparelhoId e na de Contato é ContatoId

Feito isso ele precisa ver quais são as chaves estrangeiras, então ele vai verificar quais são que no caso é AparelhoId que pertence a aparelho,e na entidade de aparelho ele tem um Contato Id.

E o que seria o

public virtual Aparelho Aparelho { get; set; }

Da entidade de Numero ?

Share this post


Link to post
Share on other sites
  • 0

Exatamente isso.

 

O migration funciona por convenção de nomenclatura.

Exemplo: Você tem uma classe chamada Numero, essa classe vai ser mapeada e precisa de uma pk, essa classe precisa de uma propriedade chamada Id ou NumeroId.

 

Propriedade virtual é pra você poder 'caminhar' entre as entidades e fazer 'join'.

 

Ai você pode acessar os aparelhos com esse número, no caso.

E também os números pelo aparelho.

Um mapeamento de ida e volta... 

Share this post


Link to post
Share on other sites
  • 0

Ou seja, o Id no final não é questão de estética, mas sim pela forma que o Migrations usa para trabalhar !

 

Não sei se a maneira que estou usando esse public virtual está correta, mas irei treinando assim, quando acabar esse meu projeto de agenda quero bolar algo com umas 5 entidades de relacionamento ! Valeu cara ! Obrigado !!!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Eduardo Cândido da Rosa
      Boa noite da lista de 30 por enquanto foram 2 os problemas que não consegui entender o enunciado ou não consegui realmente resolver...
       
      Gostaria da ajuda de vocês para resolver esse enunciado em C++, não vou postar o que fiz pois não consegui formular uma resposta adequada espero que ajudem.
       
      27)    A locadora de carros SAI DA FRENTE está fazendo uma promoção e está alugando carros no período junino por R$ 30,00 a diária. Além disso, a locadora cobra R$ 0,01 por quilômetro rodado. Como é período de São João, a locadora quer fidelizar os clientes e está dando 10% de desconto no valor total do aluguel de qualquer carro.
       
      Implemente um programa em C++ que leia quantos dias a pessoa ficou com o carro: [1; 30] e quantos quilômetros ela rodou [1; 1000], calcule e mostre o valor total que a pessoa deve pagar pelo aluguel do carro.
    • By Eduardo Cândido da Rosa
      Q)  Uma máquina automática de café só funciona com notas de 5 reais e nunca dá o troco. O café custa 7 reais. Assim, se o cliente pedir apenas um café, ele vai perder 3 reais, pois terá que dar 10 reais, e a máquina não devolverá o troco.
       
      É possível comprar mais de um café em uma só compra. Logo, se o cliente colocou 15 reais, significa que ele vai obter dois cafés e perderá 1 real.
       
      Implemente um programa em C++ que leia a quantidade de dinheiro que o cliente colocou na máquina sempre um múltiplo de 5 e imprima quanto o cliente irá perder no troco.
       
      O que fiz até agora, não sei o que devo mudar, me ajudem por favor:
       
      #include <iostream>
      using namespace std;
      int main() {
       
       
      int i,resultado,valor;
       
       
      cout << "Informe o valor:\n";
       
      cin >> valor;

      }
       
      for(i = 0; valor >= 7; i++){
        valor -= 7;
        resultado = valor;
      }
       
      cout << "\nA quantidade de cafe: "  << i << endl;  
      cout << "\nO restante do dinheiro: " << resultado << endl;    
         
      }else{
      cout << "\nErro!!\n" << endl;
      }
       
      return 0;
      }
    • By iago_ss
      Olá!!!
      Sou iniciante na área de programação para desktop e móvel, porém, penso em iniciar um curso para começar a desenvolver para estas áreas.
      Hoje, penso em desenvolver um programa, similar a um site q possuo, isso porque fico preso a diversos problemas impossíveis de resolver por ser um ambiente web. 
      O site hoje possui uma webrádio shoutcast (passo por problemas sempre que o chrome atualiza as politicas de privacidade), um fórum, notícias de jogos dentre outras funcionalidades.
      Além disso, gostaria de implementar mini-jogos.
       
      Gostaria de saber qual a melhor linguagem, no ponto de vista de vocês, para desenvolver esse programa, tendo em vista que eu partiria do zero.
      Pesquisei sobre e as mais utilizadas são c# e Java. Com essas linguagens é possível consultar banco de dados mysql hospedados na web?
    • By frlopes
      Pessoal, bom dia.
       
      Tentei fazer o exemplo abaixo do site:
       
      http://www.macoratti.net/15/10/mvc_roles1.htm
       
      E está retornando o seguinte erro quando tento fazer um novo registro:
       
      System.InvalidOperationException: 'The ViewData item that has the key 'Name' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'.'
       
      Alguém poderia me ajudar? 
      Obrigada!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.