/ / UnitOfWork - IRepository - STE - entidade-estrutura, entidade, padrão de repositório

UnitOfWork - IRepository - STE - entidade-estrutura, entidade, padrão de repositório

Estou tentando implementar um aplicativo simples de 3 camadas, montado da seguinte maneira:

1 - DAL (é um UnitOfWork e IRepository, com entidade do POCO (estrutura de entidade T4))

2 - BLL (referência ao DAL)

3 - UI (referência à BLL)

Como li muitos artigos, decidi implementar um padrão clássico UnitOfWork-Repository, em que esses repositórios não conhecem nenhuma entidade de rastreamento automático:

public interface IRepository<T>
{
void Attach(T entity)
{
...
}

Questões: se meu componente for executado no contexto winForm, algum controle da interface do usuário poderá perseguir alguma propriedade da entidade; portanto, chamar mais método de Repositório como Editar (entidade T) será inútil, pois minha entidade já está sendo rastreada pelo contexto interno do objeto. Obviamente, se eu estiver executando no contexto da Web, tudo funcionará bem, pois a plataforma da Web é sem estado. Um truque simples pode ser descartar meu objectContext após cada operação de BLL, mas não tenho certeza se quero usar essa solução alternativa. Então, estou procurando uma solução mais bonita para gerenciar todos os casos.

O IRepository deveria ignorar alguma coisa sobre STE? A BLL deve sempre dispor de seu próprio repositório interno e / ou unidade para simular um ambiente sem estado?

Respostas:

1 para resposta № 1

Se você está desenvolvendo no WinForms, por que vocêquer simular plataforma sem estado? Em relação aos padrões Repository e UnitOfWork, não os veja como algo estritamente vinculado ao EntityFramework. Esqueça o contexto na camada da interface do usuário. Esses padrões são independentes do ORM usado e existem para que você possa alternar seu DAL facilmente e testar mais seu aplicativo. eficientemente.