Pergunta

Eu li alguns artigos sobre POCO no quadro entidade, mas ainda não entendo o que eu posso usá-lo. Como pode POCO beneficiar meus projetos?

Foi útil?

Solução

padrões POCO para "Objeto Plain Old CLR". Refere-se a um estilo de arquitetura ORM onde todo o trabalho para persistir e carregar os dados do armazenamento de dados é feito pelo sistema com o objeto em si saber o que está acontecendo com ele. Isto significa que o ORM pode apoiar totalmente simples objetos que não foram modificados de forma alguma com o ORM em mente. Um ORM que suporta persistência de POCOs não vai exigir que você tem a sua classe herde a partir de qualquer base específica, implementar qualquer interface, ou métodos de tag mesmo com todos os atributos.

O completo oposto deste (também conhecido como Data Access Objects - ou DAO) é quando todo o armazenamento é tratado pelo próprio objeto, ele sabe exatamente como serializar e armazenar em si e como carregar-se quando necessário. Neste caso, os objetos devem ser usados ??apenas para transferir os dados e não deve representar qualquer da lógica de negócios do sistema.

Na realidade, este é mais um espectro com estas duas situações em cada extremidade. Muitos ORMs sentar em algum lugar no meio, o que requer persistência para ser tratada externamente à classe, mas muitas vezes também requer alguns metadados ou interfaces de ser implementado nas classes sendo mantido para facilitar as coisas.

A EF (v1) não suporta POCOs. Os objetos devem implementar várias interfaces (para fornecer notificação de propriedade mudanças de valores, etc.), a fim de ser persistente pela estrutura. Eu acredito que há addon estruturas que tentar adicionar suporte POCO à EF, mas eu não sei como eles são bem sucedidos. O EF em .NET 4.0 terá suporte POCO.

POCO é muitas vezes considerado bom porque permite uma forte separação de interesses. Você pode definir seus objetos de dados para ter absolutamente nenhum conhecimento do mecanismo que será usado para armazená-los. (Por isso, faz com que seja fácil de mudar o mecanismo de armazenamento para algo diferente no futuro). Isso também significa que você não tem que criar seus objetos de dados com qualquer consideração para o banco de dados / framework que é usado para armazená-los.

Outras dicas

POCO é apenas "Plain Old CLR Objeto". É apenas uma classe padrão, qualquer classe padrão.

Em termos de EF, as pessoas estão se referindo a ser capaz de configurar EF para armazenar suas próprias classes (não gerados diretamente pelo EF) no banco de dados.

POCO é apenas uma classe normal, sem as interfaces adicionadas ou classes de base para que ele funcione com sua camada de banco de dados (neste contexto).

Advantage são: 1) nenhuma dependência em que a camada de banco de dados específico, para que você possa trocá-lo por um melhor (isto é, NHibernate) sem ter que modificar alguma coisa que não seja a camada de banco de dados.

2) torna-se mais fácil de teste de unidade suas classes.

3) nenhum código de placa de caldeira para notificar quando uma propriedade mudou etc. apenas getters simples e setters.

Idealy seus objetos de domínio são carregados do ORM, sem aquele objeto ter que ter alguma palavra a dizer na forma como ele é carregado, como as mudanças são rastreadas ou como ele é salvo etc.

NHibernate faz um trabalho muito bom com isso, a única exigência é que você tem que fazer todas as propriedades / métodos virtual, isso é muito melhor do que qualquer dependência duro.

POCO são classes projetadas para transferir dados dentro de sua aplicação (ou seja, mover dados da camada de dados para a camada de interface do usuário). Eles também dissociar a estrutura de sua aplicação a partir do esquema do seu banco de dados.

Em pequenos projetos este não é um grande negócio, mas como o projeto cresce o modelo de objeto (como você projetar suas POCOs) tende a desviar-se do esquema do banco de dados.

Outros métodos que são normalmente utilizados na Net são tabelas de dados e conjuntos de dados. Tipicamente o os dados são recuperados utilizando o nome da coluna. Este casais você faz o nome da coluna em seu banco de dados. Se o nome da coluna muda no banco de dados que você quebra de código.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top