Pergunta

Estou com a impressão de que

  • EF com POCO:. Permite mapear seu próprio POCO às entidades no modelo (edmx)
  • Código-Only EF: não edmx modelo desenhador / (ie CSDL / SSDL / MSL (coletivamente EDMX) metadados.). Ainda POCO mas o mapeamentos, relacionamentos, navegação, etc são todos manualmente codificado (daí o código-only, descrição).

Se essa descrição dos dois conceitos é (mais ou menos) correta, por que alguém o que fazer um Code-Só que em vez de EF com POCO?

Ambos estão fazendo POCO, mas o segundo tem a carga extra de ter de também fazer o mapeamento, manualmente?

Foi útil?

Solução

  1. código só é grande se você quer escrever o mapeamento à mão sem ter que slog através XML. Também o designer edmx fica pesado depois de 50 ou mais modelos, é apenas um fardo para usar dessa forma.

Quando algo dá errado dentro do seu mapeamento XML é realmente uma PITA para cavar em torno do xml para fazer as correções necessárias. Também as quebras de designer, se você iniciar manualmente editar o seu xml em determinados cenários.

Agora, eu não sei os detalhes, mas o designer em EF1 não suportar todas as opções de mapeamento disponíveis. O designer EF4 tem algumas melhorias (ida relacionamentos vêm à mente), mas não tenho certeza se ele tem paridade de recursos com mapeamentos manuais.

  1. Sim.

Outras dicas

A única coisa que eu gostaria de acrescentar a resposta de jfar é que, com Code-Só você não Have para criar mapeamentos.

mapeamentos pode ser inferida por convenção a maior parte do tempo.

O ponto sobre a visão pré-geração é importante. Eu não ouvi que a Microsoft tem a intenção de fornecer pré-geração de código-only. Se alguém sabe diferente post, por favor.

Eu tenho usado o código somente para 400 tabelas como parte de uma investigação sobre se a ir com EF4 ou NHibernate e há um 80 segundos de atraso inicial para a geração de vista - exatamente a mesma de quando usando o designer, mas com o designer vista pré-geração é possível que trouxe o atraso até 10 segundos. Se você não está feliz dividindo o seu modelo e você tem mais de cerca de 75 mesas não vão código-only.

Eu não acho que o Código-Only atualmente permite pregenerate pontos de vista, portanto, pode haver um custo de desempenho. Esta mudança poderia antes do lançamento, no entanto.

Outra coisa que não foi mencionado é que você começa cheio de verificação em tempo de compilação de sua sintaxe ao usar código só. Se você estiver usando o designer visual com EDMX, você recebe uma verificação em tempo de compilação, mas é limitado. Para modelos maiores, EDMX fica extremamente unweildy, e escrever manualmente o CSDL, SSDL e MSL é a única maneira decente para gerenciar extremamente grandes modelos com mapeamentos XML. Você não obter qualquer verificação em tempo de compilação se você gerenciar manualmente os mapeamentos.

Com código só, você tem o benefício de completa verificação de tempo de compilação para os modelos de qualquer tamanho, mesmo se você tem centenas ou milhares de entidades que você precisa para trabalhar. Ele também resulta em menos "desordem", como seu produto final é todos os conjuntos compilados, em vez de uma mistura de montagens e vários tipos de arquivos XML.

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