Pergunta

Muitos desenvolvedores de produtos desejam escrever um aplicativo .NET que funcionará perfeitamente com qualquer RDBMS popular como SQL Server, Oracle, DB2, MySQL. Se usarmos o bloco de aplicativos de dados, ele escolherá dinamicamente o driver de banco de dados (ORACLECLIENT, SQLCLIENT ou OLEDBCLIENT) com base na configuração.

No entanto, todos os bancos de dados têm seus próprios sabores do SQL. Existem diferenças sutis que impedem que uma base de código SQL seja usada universalmente - os nomes de funções são diferentes, a maneira como as datas são tratadas são diferentes, a maneira como as colunas de identidade tratadas são diferentes e assim por diante.

Pode -se usar um produto de terceiros da Data Direct para escrever código neutro de DB usando sequências de fuga predefinidas.

Existem ferramentas ou produtos da Microsoft que resolva esse problema?

Foi útil?

Solução

o Microsoft Ado.net Entity Framework é um Mapeamento de objeto-relacional Framework da Microsoft, projetado para permitir que você escreva o código que é (um pouco) db-agnóstico. Todos os principais DBMs têm suporte para a estrutura da entidade, embora para muitos (por exemplo, MySQL, Postgres), você precisará baixar algo separado da instalação do .NET Framework.

NOTA: Eu ainda não trabalhei em um único projeto grande usando uma ferramenta O/RM, onde não havia pelo menos um caso em que tivemos que desembolsar o SQL nativo-seja para funcionalidade específica de DB ou por razões de desempenho (necessário escrever uma consulta de uma maneira específica para obter um bom plano de consulta). Mas um bom O/RM pode funcionar a maior parte do tempo para evitar que a necessidade de escrever SQL.

Dito isto, a versão atual da estrutura da entidade é bastante limitada em várias dimensões- outras estruturas de O/RM como Nibernate, Subsônico, etc. são muito mais maduros, onde "maduro" significa suportar uma gama mais profunda de recursos do DBMS sem ter que desembolsar para o SQL nativo, um suporte mais amplo da comunidade, melhor desempenho etc.

Esta é a minha maneira educada de dizer que, para um projeto relativamente complexo do mundo real, não acho que a versão atual da estrutura da entidade seja o melhor caminho a seguir em relação às outras ferramentas O/RM disponíveis.

Aparentemente, o próximo .NET 4.0/VS2010 Versão da estrutura da entidade Microsoft é muito melhorado, portanto, a declaração acima pode não ser verdadeira no próximo ano. O novo Entity Framework adiciona suporte ao DDL, por exemplo, para que você possa criar tabelas e índices de uma maneira independente de DBMS. Além disso, a estrutura do .NET 4.0 está alavancando um recurso legal chamado Modelos T4, que é um recurso interessante para o código de geração automática no momento da construção, o que é importante para coisas como invólucros de O/RM que precisam ser mantidos em sincronia com um esquema de banco de dados externo-e que devem produzir melhor (também conhecido como pré-compilado) Desempenho do que as ferramentas O/RM que não conhecem os tipos de colunas de banco de dados até o tempo de execução.

Outras dicas

Como eu entendi, você está procurando uma ferramenta para escrever SQL independente de RDBMS, mas não um ORM. Este é um problema muito real resolvido por diferentes fornecedores de ORM de maneiras diferentes. Eu só posso mencionar XXENTS SQL DOM ferramenta, que foi desenvolvida para o seu ORM - DataObjects.net. É uma abstração sobre o SQL, permitindo escrever consultas usando o modelo DOM completo. Nesse momento, o SQL DOM não é promovido separadamente do DataObjects.net, mas é um produto de código aberto e você certamente pode perguntar a seus autores sobre ele. Até onde eu sei, ele é usado com sucesso em alguns projetos de terceiros.

Não diretamente da Microsoft. Essas ferramentas são comumente denominadas maperes de objetos ou ORM curtos. O Nibernate, por exemplo, é um ORM comum e amplamente usado que certamente atende às suas necessidades. Obviamente, existem outros produtos comerciais, como o Telerik OpenAccess ORM, o Devexpress XPO ou Remobjects DataabStract, que ajudarão você a ser agnóstico do banco de dados.

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