none
ADO Entity / Melhor forma de implementar RRS feed

  • Pergunta

  • Bom dia a todos!

    Estou com uma dúvida sobre ADO Entity que não acho a resposta em lugar algum na internet.

    Qual a forma correta de se trabalhar com ADO Entity?
    1. Ter vários Models cada um relacionado a um determinado assunto
      Como seria joins com outras entities que não estão no mesmo model?
    2. Ter apenas um Model que contém todas as entities
      Como ficaria esta opção com um banco de dados de 4500 tabelas?
      Isto iria pesar a aplicação? o banco?

    Uma outra dúvida.

    Tenho uma procedure que funciona da seguinte forma

    • O objetivo da procedure é salvar um registro (insert ou update)
    • Um dos parâmetros da procedure é a key da tabela
    • Se esse parâmetro (key da tabela) for null a procedure entenderá que é um insert, caso contrário ela fará um update
    A situação é a seguinte, eu tenho a mesma procedure para insert e update, como mapear isto no ADO Entity para que o insert e o update usem a mesma fuction?
    Quando tentei fazer isto o VS não deixou que executasse esta ação, quando selecionei a fuction no insert e tentei selecioná-la no update ela não foi listada pois já estava utilizando no insert.

    Não posso usar a mesma function para insert e update da entity?
    Abraços, Riderman | Analista de sistemas | MCTS SQL Server http://ridermansb.spaces.live.com/
    terça-feira, 20 de outubro de 2009 11:15

Respostas

  • Riderman,

    Vamos lá.

    Qual a forma correta de se trabalhar com ADO Entity?
      É a melhor forma para o seu negocio. O ADO Entity nasceu a pouco e muita coisa precisa ser evoluida, mas ele é bastante flexivel, tem suas limitações e você tem que fazer várias coisas na mão.

    Como seria joins com outras entities que não estão no mesmo model?
       Infelizmente isto hoje não é possivél. Veja http://blogs.msdn.com/adonet/archive/2008/11/25/working-with-large-models-in-entity-framework-part-2.aspx.

    Como ficaria esta opção com um banco de dados de 4500 tabelas?
       Ficaria muito lento. Você sentiria isto nos seguintes pontos: Designer e Intellisense.

    Isto iria pesar a aplicação?
       Sim. Pois para carregar o metadata iria demorar mais e tambem na montagem das View Generation. Veja http://blogs.msdn.com/adonet/archive/2008/11/25/working-with-large-models-in-entity-framework-part-1.aspx.

    o banco?
       Acredito que não. Os problemas de permonce que estudei somente afetam a aplicação.

    Não posso usar a mesma function para insert e update da entity?
      Não.

    Se ajudar não se esqueça de marcar como resposta.
    Espero ter ajudado. Qualquer dúvida favor entrar em contato.

    Douglas Aguiar
    MCAD, MCT
    quarta-feira, 21 de outubro de 2009 21:36
  • Riderman,

    Vamos lá.

    Você ficará com várias classes representando o mesmo objeto em models diferentes.
    Me veio a mente uma solução que não testei mas pode te ajudar, nas classes que você for repetir entre os models você cria uma interface para elas e que todas classes repetidas devem implementar (usando partial class, o entity suporta partial class).

    Exemplo:

    //Interface
    public interface ICliente
    {
        string Nome{get; set;}
        int Idade{get; set;}
    }
    
    //Partials
    //Classes cliente separadas por model
    
    //Model de Produtos
    namespace Produtos.Model
    {
        public partial class Cliente : ICliente
        {
        }
    }
    
    //Model de OS
    namespace OS.Model
    {
        public partial class Cliente : ICliente
        {
        }
    }

    Assim pode ser que ajude a você trocar infromações de objetos repetidos pelos models.

    Se esta solução não funcionar aconselho a você usar somente um Model enquanto não sai a versão final do Entity Framework.

    Agora se você já pode usar o beta 2 do VS 2010, você pode usar a ultima versão do Entity Framework usando POCO (você faz as classes).
    Veja os links abaixo:
    http://blogs.msdn.com/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx
    http://blogs.msdn.com/adonet/archive/2009/05/28/poco-in-the-entity-framework-part-2-complex-types-deferred-loading-and-explicit-loading.aspx


    Não se esqueça de marcar como resposta todos os posts que te ajudaram na solução do problema.
    Espero ter ajudado. Qualquer dúvida favor entrar em contato.

    Douglas Aguiar
    MCAD, MCT
    sexta-feira, 23 de outubro de 2009 15:52

Todas as Respostas

  • Riderman,

    Vamos lá.

    Qual a forma correta de se trabalhar com ADO Entity?
      É a melhor forma para o seu negocio. O ADO Entity nasceu a pouco e muita coisa precisa ser evoluida, mas ele é bastante flexivel, tem suas limitações e você tem que fazer várias coisas na mão.

    Como seria joins com outras entities que não estão no mesmo model?
       Infelizmente isto hoje não é possivél. Veja http://blogs.msdn.com/adonet/archive/2008/11/25/working-with-large-models-in-entity-framework-part-2.aspx.

    Como ficaria esta opção com um banco de dados de 4500 tabelas?
       Ficaria muito lento. Você sentiria isto nos seguintes pontos: Designer e Intellisense.

    Isto iria pesar a aplicação?
       Sim. Pois para carregar o metadata iria demorar mais e tambem na montagem das View Generation. Veja http://blogs.msdn.com/adonet/archive/2008/11/25/working-with-large-models-in-entity-framework-part-1.aspx.

    o banco?
       Acredito que não. Os problemas de permonce que estudei somente afetam a aplicação.

    Não posso usar a mesma function para insert e update da entity?
      Não.

    Se ajudar não se esqueça de marcar como resposta.
    Espero ter ajudado. Qualquer dúvida favor entrar em contato.

    Douglas Aguiar
    MCAD, MCT
    quarta-feira, 21 de outubro de 2009 21:36
  • Olá Douglas, obrigado pela resposta!

    Mas estou com uma dúvida ainda, a melhor forma é ter um model para todas as tabelas do banco de dados ou vários models cada um com uma regra de negócio diferente?

    O sistema irá gerenciar estoque de equipamentos, OS, clientes, produtos existem muitas tabelas envolvidas.
    O que acontecerá quando a mesma tabela ficar em 2 models diferentes?


    Abraços, Riderman | Analista de sistemas | MCTS SQL Server http://ridermansb.spaces.live.com/
    quinta-feira, 22 de outubro de 2009 23:44
  • Riderman,

    Vamos lá.

    Você ficará com várias classes representando o mesmo objeto em models diferentes.
    Me veio a mente uma solução que não testei mas pode te ajudar, nas classes que você for repetir entre os models você cria uma interface para elas e que todas classes repetidas devem implementar (usando partial class, o entity suporta partial class).

    Exemplo:

    //Interface
    public interface ICliente
    {
        string Nome{get; set;}
        int Idade{get; set;}
    }
    
    //Partials
    //Classes cliente separadas por model
    
    //Model de Produtos
    namespace Produtos.Model
    {
        public partial class Cliente : ICliente
        {
        }
    }
    
    //Model de OS
    namespace OS.Model
    {
        public partial class Cliente : ICliente
        {
        }
    }

    Assim pode ser que ajude a você trocar infromações de objetos repetidos pelos models.

    Se esta solução não funcionar aconselho a você usar somente um Model enquanto não sai a versão final do Entity Framework.

    Agora se você já pode usar o beta 2 do VS 2010, você pode usar a ultima versão do Entity Framework usando POCO (você faz as classes).
    Veja os links abaixo:
    http://blogs.msdn.com/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx
    http://blogs.msdn.com/adonet/archive/2009/05/28/poco-in-the-entity-framework-part-2-complex-types-deferred-loading-and-explicit-loading.aspx


    Não se esqueça de marcar como resposta todos os posts que te ajudaram na solução do problema.
    Espero ter ajudado. Qualquer dúvida favor entrar em contato.

    Douglas Aguiar
    MCAD, MCT
    sexta-feira, 23 de outubro de 2009 15:52