none
Validem a minha lógica por favor RRS feed

  • Pergunta

  • Olá!!!

    Criei um modelo EF (Model First) com as seguintes características:

    • Clientes
    • Enderecos
    • Comunicacao;
    • etc

    Para fazer o insert estou usando a seguinte lógica (funcionou mas sempre pode melhorar com a ajuda de vocês)

    TesteContainer db = new TesteContainer ();
         Cliente cli = new Cliente()
         {
          nome = txtNome.Text.Trim(),
          apelido = txtApelido.Text.Trim()
         };
    
         Endereco end = new Endereco()
         {
          nome = txtEndereco.Text.Trim(),
          numero = txtNumero.Text.Trim(),
          nomeComplemento = txtComplemento.Text.Trim(),
          nomeBairro = txtBairro.Text.Trim(),
          codigoCEP = txtCEP.Text.Trim()
         };
    
         db.AddObject("Cliente", cli);
         db.AddObject("Endereco", end);
         db.SaveChanges();
       
       }

    A lógica é essa ou só está funcionando por sorte?

    Basta colocar as outras entidades (Comunicacao, fulano, cicrano e tudo o mais) e repetir o processo descrito acima sem problema?

    Ansiosa,

    Pri

    quinta-feira, 20 de janeiro de 2011 17:55

Respostas

  • Então PriStoppa segue um exemplo de como eu faria veja se lhe auxilia em alguma coisa este código se encontra no botão Salvar:

    using (ModeloContainer ctx = new ModeloContainer())
          {
            Cliente cliente = new Cliente();
            cliente.Nome = txtNome.Text;
            cliente.Email = txtEmail.Text;
            ctx.Cliente.AddObject(cliente);
    
            Endereco endereco = new Endereco();
            endereco.Rua = txtRua.Text;
            endereco.Cidade = txtCidade.Text;
            ctx.Endereco.AddObject(endereco);
    
            ctx.SaveChanges();
          }
    

     

    Abraços e espero ter ajudado qualquer coisa posta ai!

     


    Beleza de Creuza!
    • Marcado como Resposta PriStoppa sexta-feira, 21 de janeiro de 2011 11:27
    sexta-feira, 21 de janeiro de 2011 11:17
  • Apesar do tópico já estar resolvido...

    Acredito que você possa melhorar a composição dos seus EF. Como? Criando o relacionamento fisico entre Cliente x Endereço no seu banco, e consequentemente gerar as entidades também com composição.

    Abs

    • Marcado como Resposta PriStoppa sábado, 22 de janeiro de 2011 14:26
    sexta-feira, 21 de janeiro de 2011 23:21
  • Sim, exatamente composição e agregação.

    Composição, em um exemplo simples, ficaria algo como:

    public class Endereco
    {
        public string Rua { get; set; }
        public string Cidade { get; set; }
    }

    public class Cliente
    {
        public string Nome { get; set; }
        public string Email { get; set; }

        Endereco endereco;
        public Endereco Endereco
        {
            get
            {
                if (endereco == null)
                    endereco  = new Endereco();
                return endereco;   
            }
            set { endereco = value; }
        }
    }

    Então, uma instancia ficaria:

    Cliente cliente = new Cliente();
    cliente.Nome = "NOME";
    cliente.Endereco.Rua = "RUA";

    Claro, que esse foi um exemplo manual, mas se o banco de dados estiver com o
    relacionamento físico, o EF irá gerar as suas entidades nesse mesmo modelo.

    Abs

     

    • Marcado como Resposta PriStoppa domingo, 23 de janeiro de 2011 12:29
    sábado, 22 de janeiro de 2011 17:20

Todas as Respostas

  • Oi galera, um toquinho só!
    sexta-feira, 21 de janeiro de 2011 10:28
  • Então PriStoppa segue um exemplo de como eu faria veja se lhe auxilia em alguma coisa este código se encontra no botão Salvar:

    using (ModeloContainer ctx = new ModeloContainer())
          {
            Cliente cliente = new Cliente();
            cliente.Nome = txtNome.Text;
            cliente.Email = txtEmail.Text;
            ctx.Cliente.AddObject(cliente);
    
            Endereco endereco = new Endereco();
            endereco.Rua = txtRua.Text;
            endereco.Cidade = txtCidade.Text;
            ctx.Endereco.AddObject(endereco);
    
            ctx.SaveChanges();
          }
    

     

    Abraços e espero ter ajudado qualquer coisa posta ai!

     


    Beleza de Creuza!
    • Marcado como Resposta PriStoppa sexta-feira, 21 de janeiro de 2011 11:27
    sexta-feira, 21 de janeiro de 2011 11:17
  • É isso aí Pablito. Tava preocupada com nada. Valeu e muito o seu toque.
    sexta-feira, 21 de janeiro de 2011 11:30
  • Apesar do tópico já estar resolvido...

    Acredito que você possa melhorar a composição dos seus EF. Como? Criando o relacionamento fisico entre Cliente x Endereço no seu banco, e consequentemente gerar as entidades também com composição.

    Abs

    • Marcado como Resposta PriStoppa sábado, 22 de janeiro de 2011 14:26
    sexta-feira, 21 de janeiro de 2011 23:21
  • Calcopietro,

    No modelo real a ligação está feita. Aqui foi apenas um sketch. Mas adorei sua resposta por ter contribuído um pouco mais.

    • Detalhe: quando você comenta sobre composição você quer dizer relacionamentos todo parte (composição e agregação) ?
    • Se for gostaria e muito de um exemplo para implementar em C#.

    Valeu.

    sábado, 22 de janeiro de 2011 14:31
  • Sim, exatamente composição e agregação.

    Composição, em um exemplo simples, ficaria algo como:

    public class Endereco
    {
        public string Rua { get; set; }
        public string Cidade { get; set; }
    }

    public class Cliente
    {
        public string Nome { get; set; }
        public string Email { get; set; }

        Endereco endereco;
        public Endereco Endereco
        {
            get
            {
                if (endereco == null)
                    endereco  = new Endereco();
                return endereco;   
            }
            set { endereco = value; }
        }
    }

    Então, uma instancia ficaria:

    Cliente cliente = new Cliente();
    cliente.Nome = "NOME";
    cliente.Endereco.Rua = "RUA";

    Claro, que esse foi um exemplo manual, mas se o banco de dados estiver com o
    relacionamento físico, o EF irá gerar as suas entidades nesse mesmo modelo.

    Abs

     

    • Marcado como Resposta PriStoppa domingo, 23 de janeiro de 2011 12:29
    sábado, 22 de janeiro de 2011 17:20