Pergunta

Depois de pensar muito, eu decidi usar o LINQ to SQL como uma DAL para o meu projeto, mas manter os objetos de negócios como objetos POCO.

Isto lhe dará alguma flexibilidade porque o esquema de banco de dados é antiga e tem alguns problemas que não podem ser resolvidos, porque compatibilidade com versões anteriores.

Eu estou pensando em fazer alguns métodos para recuperar ou completar os objetos LINQ para o POCO objetos usando reflexão. Estes métodos devem tentar preencher todas as propriedades com os mesmos nomes.

A pergunta:
Você sabe a melhor maneira de fazer o mapeamento?

Esclarecimentos:
1. Eu não quero usar NHibernate, entidades, etc.
2. Eu sei que a reflexão é lento

Foi útil?

Solução

Você pode querer olhar para algo como Jimmy Bogard de AutoMapper , o que faz muito bem o que você está falando. Ele tem carregado na CodePlex e GoogleCode , se você quiser dar uma olhada nisso.

Outras dicas

Criar uma classe estática "Copiadora". O construtor estático para essa classe pode refletir sobre T e U, e usar DynamicMethod ao código Emit (circular através das propriedades em cada um, ver quais alinham). Dessa forma, o preço reflexão é pago uma vez. De lá, ele vai ser uma invocação delegado normal, que deve ser muito rápido.

O problema que você pode correr em é que os campos de simplesmente copiar do mesmo nome torna-se um pouco limitante quando as coisas não combinam perfeitamente. Você pode olhar em usar reflexão e gerar o código que faz as conversões para você, então corrigi-los pela mão.

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