ATÉ QUE PONTO VALE A PENA UTILIZAR O EF?

 Tópico anterior Próximo tópico Novo tópico

ATÉ QUE PONTO VALE A PENA UTILIZAR O EF?

C#

 Compartilhe  Compartilhe  Compartilhe
#484850 - 08/10/2018 14:15:15

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Citação:
Você instancia um objeto e pode alterar qualquer filho da maneira que quiser, depois basta dar um SaveChages que tudo será refletido no banco.


Entendi, então você faz na mão.
Isso eu não gostei muito no EF. Funciona bem para entidade com baixa profundidade. Mas quando você tem filhos, dos filhos, dos filhos, acaba ficando complicado a atualização.

Eu criei uma solução baseada em Reflection para isso. Caso tenham interesse, posso compartilhar.

Att,

"Cansei de frases intelectuais" - Eu mesmo


#484853 - 08/10/2018 15:36:05

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Você pode ter filho de filho em quantos níveis quiser, pode instanciar um "pai" e alterar algo do filho de um oitavo ou octagésimo nível inferior, vai dar na mesma.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#484861 - 08/10/2018 22:21:47

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Citação:
Você pode ter filho de filho em quantos níveis quiser, pode instanciar um "pai" e alterar algo do filho de um oitavo ou octagésimo nível inferior, vai dar na mesma.


Não concordo.
Quando estamos trabalhando com aplicações Web, recebemos o objeto como parâmetro no nosso método no Controller. Esse é o objeto modificado pelo usuário.
Esse objeto já está relacionado com um registro no banco de dados e queremos atualizar ele.
Basicamente o que fazemos é:

Recupero o objeto do banco de dados
objeto do banco de dados.propriedade1 = objeto editado.propriedade1
objeto do banco de dados.propriedade2 = objeto editado.propriedade2
Salvo as mudanças com SaveChanges.

Agora vamos adicionar uma propriedade de lista nesse mesmo objeto. A atualização seria:

Recupero o objeto do banco de dados
objeto do banco de dados.propriedade1 = objeto editado.propriedade1
objeto do banco de dados.propriedade2 = objeto editado.propriedade2
para cada item da lista do objeto editado.propriedadeLista
          verifico se o id existe na lista do banco de dados, se existe:
                              atualizo o item
          caso contrário
                              adiciono um novo item
fim para
Salvo as mudanças com SaveChanges.


E isso sem contar a questão de exclusão. Mas vamos considerar que a exclusão é apenas lógica. E não vamos implementar.

Agora caso o item dessa lista, tenha uma outra lista, ficaria assim:

Recupero o objeto do banco de dados
objeto do banco de dados.propriedade1 = objeto editado.propriedade1
objeto do banco de dados.propriedade2 = objeto editado.propriedade2
para cada item da lista do objeto editado.propriedadeLista
          verifico se o id existe na lista do banco de dados, se existe:
                              atualizo o item
                              para cada item na lista do item
                                        verifico se o item existe...se existe:
                                                        atualizo o objeto
                                        caso contrario
                                                         insiro um novo objeto
                              fim para
          caso contrário
                              adiciono um novo item
fim para
Salvo as mudanças com SaveChanges.


Isso porque considerei um objeto de poucas propriedades e ainda sem a lógica de exclusão. E olha que só coloquei as propriedades do objeto principal e ocultei dos filhos colocando "atualizo o item"
Eu não sei se sou eu que faço errado ou existe algum segredo, mas eu acho isso extremamente trabalhoso.

Atualmente eu apenas carrego o objeto do banco de dados, passo meu objeto vindo da Controller e atualização já é feita automaticamente.
Novamente, não sei se é uma boa prática, mas o custo do Reflection fica praticamente nulo, então me ajudou bastante.

Agradeço pela orientação!

"Cansei de frases intelectuais" - Eu mesmo


#484931 - 15/10/2018 16:08:39

CARINHENA
SOROCABA
Cadast. em:Junho/2004


O EF, lambda... essas coisas, nunca vi realmente uma forma simples e funcional (tirando quando são coisas MUITO simples).

Eu ainda acho que essa implementação poderia ter sido de uma forma muito mais simples.
Mas, criaram um monte de conceito em cima disso, que parece que o legal era "florear a calda do pavão".

Mas, tem gente que gosta.. rs



Carinhena

A melhor forma de aprender e ensinando!


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário