ENTITYFRAMEWORK - INSTANCIAMENTO DE CONTEXTO.

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

ENTITYFRAMEWORK - INSTANCIAMENTO DE CONTEXTO.

C#

 Compartilhe  Compartilhe  Compartilhe
#480013 - 06/03/2018 08:41:43

MRSILVA
MARINGA
Cadast. em:Julho/2015


Olá Pessoal.

Estou desenvolvendo uma aplicação e utilizo Entity Framework e estou tento algumas dificuldades para aproveitar o mesmo contexto instanciado em algumas situações na minha aplicação, vou tentar explicar com um exemplo vou ignorar alguns detalhes da arquitetura do meu projeto para que não fique muito longa a explicação.

Tenho uma classe produto e uma outra classe exclusivamente para a classe produto que contem todos os meus métodos referentes o banco de dados (repositório Produto) nessa classe que contem os métodos referentes o banco de dados recebe contexto como parâmetro, ou seja, sou obrigado a passar contexto no instanciamento da classe, estou utilizando esse padrão para todas minhas entidades.
Tenho um formulário que faz varias consultas e que serve também para selecionar um produto especifico, pretendo utilizar esse formulário em outras partes do meu sistema assim ganho tempo no desenvolvimento, mas estou tento dificuldades por instanciamento de vários contextos, por exemplo, tenho uma classe que se chama “entradaProduto” ela é a entidade que guarda as informações referente a entrada de um produto e uma das suas propriedades virtual é a classe produto é nesse ponto que estou tento dificuldade pelo seguinte motivo:

Quando estou realizando um registro de uma entradaProduto preciso buscar um objeto produto através do formulário de consulta produto que expliquei anteriormente, esse objeto produto insiro dentro do meu objeto entradaProduto, mas quando vou salvar no banco de dados o objeto entradaProduto ocorre um erro pelo motivo que o objeto produto vem de uma instancia diferente de contexto.

A minha dúvida é a seguinte se eu instanciar o contexto na minha camada visualização é passar esse contexto por parâmetro em cada formulário que tem dados relacionados, ou seja, esse formulário passará por parâmetro para classes responsável pela persistência de dados um único contexto e não teria, mas esses problemas. Instanciar o contexto na camada visualização está errado levando em considerações boas praticas de programação?

Se alguém tiver alguma sugestão fico a disposição.
Desde já agradeço.





#480019 - 06/03/2018 10:47:38

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


Membro da equipe
Porque você precisaria de um repositório se está usando EF?

_______________________________________________________________________
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!


#480020 - 06/03/2018 11:05:27

MRSILVA
MARINGA
Cadast. em:Julho/2015


Kerplunk.
Só para deixar claro não utilizo repositório genérico, apenas tenho uma classe especifica para cada entidade ou classes relacionadas que agrupa todos os métodos relacionado  com persistência de dados, acredito que dessa forma fica mais fácil de dar manutenção e futuras implementações.

Caso não tivesse essa classe (repositório) teria que fazer esses métodos na própria entidade?
Caso sim, não teria que passar o mesmo contexto para varias classes diferentes não teria o mesmo problema?

Essa parte de arquitetura é muito complicado.

Caso tenha alguma sugestão fico muito grato, mais uma vez obrigado pela ajuda.

Desde já agradeço.






#480021 - 06/03/2018 11:20:21

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


Membro da equipe
O contexto é geralmente instanciado para uma operação ou bloco de operações. Há casos em que se usa operações encadeadas com transações, mas nesse caso somente é passada a transação.

_______________________________________________________________________
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!


 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