Pergunta

Usei o Entity Framework para iniciar um projeto de amostra bastante simples.No projeto, criei um novo modelo de dados de entidade a partir de um banco de dados SQL Server 2000.Consigo consultar os dados usando LINQ to Entities e exibir valores na tela.

Tenho um banco de dados Oracle com esquema extremamente semelhante (estou tentando ser exato mas não conheço todos os detalhes do Oracle).Gostaria que meu projeto pudesse ser executado nos armazenamentos de dados SQL Server e Oracle com o mínimo de esforço.Eu esperava poder simplesmente alterar a string de configuração do meu modelo de dados de entidade e o Entity Framework cuidaria do resto.No entanto, parece que isso não funcionará perfeitamente como eu pensava.

Alguém fez o que estou tentando fazer?Novamente, estou tentando escrever um aplicativo que possa consultar (e atualizar) dados de um banco de dados SQL Server ou Oracle com esforço mínimo usando o Entity Framework.O objetivo secundário é não ter que recompilar o aplicativo ao alternar entre armazenamentos de dados.Se eu tiver que "Atualizar modelo do banco de dados", tudo bem, porque não precisaria recompilar, mas prefiro não seguir esse caminho.Alguém sabe de alguma etapa que possa ser necessária?

Foi útil?

Solução

O que geralmente é entendido pelo termo "Ignorância de Persistência" é que suas classes de entidade não estão sendo inundadas com dependências de estrutura (importante para cenários de N camadas).Este não é o caso agora, já que as classes de entidade devem implementar certas interfaces EF ("IPOCO"), em oposição aos antigos objetos CLR.Como outro postador mencionou, existe uma solução chamada Adaptador de ignorância de persistência (POCO) para Entity Framework V1 para isso, e o EF V2 oferecerá suporte imediato ao POCO.

Mas acho que o que você realmente tinha em mente era a independência do banco de dados.Com um grande XML de configuração que inclui modelo de armazenamento, modelo conceitual e o mapeamento entre os dois a partir do qual um ObjectContext digitado será gerado em tempo de design, também acho difícil imaginar como oferecer suporte transparente a dois bancos de dados.

O que provavelmente parece mais promissor é aplicar um provedor ADO.NET independente de banco de dados como o de DataDirect.DataDirect também anunciou suporte EF para o terceiro trimestre de 2008.

Outras dicas

http://blogs.msdn.com/jkowalski/archive/2008/09/09/persistence-ignorance-poco-adapter-for-entity-framework-v1.aspx

O principal problema é que a estrutura da entidade não foi projetada tendo em mente a ignorância da persistência.Sinceramente, eu consideraria usar algo diferente da estrutura de entidade.

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