Usuário com melhor resposta
ADO Entity / Melhor forma de implementar

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?- 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? - 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
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 vários Models cada um relacionado a um determinado assunto
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- Sugerido como Resposta Douglas Aguiar quarta-feira, 21 de outubro de 2009 21:36
- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 13 de julho de 2010 22:40
-
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- Sugerido como Resposta Douglas Aguiar sexta-feira, 23 de outubro de 2009 15:52
- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 13 de julho de 2010 22:40
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- Sugerido como Resposta Douglas Aguiar quarta-feira, 21 de outubro de 2009 21:36
- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 13 de julho de 2010 22:40
-
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/ -
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- Sugerido como Resposta Douglas Aguiar sexta-feira, 23 de outubro de 2009 15:52
- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 13 de julho de 2010 22:40