Vários modelos de dados LINQ com a mesma tabela sendo mapeada em cada mapeamento de reutilização

StackOverflow https://stackoverflow.com/questions/3411633

Pergunta

Implementei o padrão de repositório na camada de acesso a dados da nossa camada de serviço atual.

Temos um modelo de objeto em que a mesma classe "Notas Históricas" é mapeada em objetos mutiple (atualmente 6, mas em breve será mais!)

Parte das melhores práticas para o uso do LINQ para SQL não é ter um arquivo DBML para cada tabela no banco de dados, mas, em vez disso, para dividi -lo, dessa forma não tem um grande desempenho quando o contexto é criado.

Infelizmente, os locais lógicos para separar os objetos deixam as notas históricas em 5 arquivos DBML diferentes. Quando o gerador LINQ cria as classes, ele gera uma classe diferente no espaço de nome diferente.

Eu tenho um objeto de nota histórica no modelo de domínio, mas não quero reformular o modelo de objeto de domínio no modelo de dados para sempre que usamos as notas históricas.

Uma das coisas que não quero fazer é quebrar a "leitura" dos dados em várias consultas.

Existe uma maneira de mapear a nota histórica em vários modelos de dados, mas apenas escrevo o mapeamento uma vez?

Obrigado

Pete

Solução

Obrigado pela ajuda, acho que vou voltar para um contexto de dados para todas as tabelas de dados.

Os trabalhos envolvidos na configuração dos vários modelos não valem a complexidade e a fragilidade potencial do código. Tendo que escrever a mesma mão esquerda, o código da mão direita para mapear as notas históricas é muito trabalho e muitos lugares para manter o código em sincronia.

Obrigado pessoal pela contribuição

Foi útil?

Solução

Parte das melhores práticas para o uso do LINQ para SQL não é ter um arquivo DBML para cada tabela no banco de dados, mas, em vez disso, para dividi -lo, dessa forma não tem um grande desempenho quando o contexto é criado.

onde você ouviu isso? Eu não concordo. O DataContext é geralmente um objeto bastante leve, independentemente do número de tabelas.

Veja aqui uma análise dos problemas que envolvem vários contextos de dados:

LINQ para SQL: contexto de dados único ou múltiplos contextos de dados?
http://craftycodeblog.com/2010/07/19/linq-to-sql-single-data-context-or-multiple/

Na minha opinião, você deveria ter um datacontext por banco de dados. Isso também resolveria seus problemas de mapeamento.

Veja também LINQ para SQL: Múltiplo / único .dbml por projeto?

Outras dicas

Uma opção pode ser colocar as notas históricas em seu próprio datacontext e manter as relações entre esse objeto e o restante do seu modelo como 'IDs' (então apenas as chaves estrangeiras no banco de dados). É assim que eu faria de qualquer maneira.

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