Oracle クライアントを使用して Oracle データベースにアクセスする .NET アプリケーションがあります。
いつかデータベースを Oracle から他のリレーショナル データベースに移行する場合、アプリケーションのデータ アクセス コードを変更する必要はありません。
ドライバーまたは DLL などの何かを変更したいだけで、残りのコードが適切なデータベースからデータを取得するように接続文字列を変更したいと考えています。
これどうやってするの?
Oracle クライアントを使用して Oracle データベースにアクセスする .NET アプリケーションがあります。
いつかデータベースを Oracle から他のリレーショナル データベースに移行する場合、アプリケーションのデータ アクセス コードを変更する必要はありません。
ドライバーまたは DLL などの何かを変更したいだけで、残りのコードが適切なデータベースからデータを取得するように接続文字列を変更したいと考えています。
これどうやってするの?
Microsoft のエンティティ フレームワークを調べてください。この ORM は、ほとんどのリレーショナル データベースに接続して通信できる必要があります。
http://msdn.microsoft.com/en-us/data/ef.aspx
それについて私がお勧めする本: http://shop.oreilly.com/product/9780596807252.do http://shop.oreilly.com/product/0636920022220.do
または視聴: http://channel9.msdn.com/Events/TechEd/NorthAmerica/2009/DTL312
ADO .NET には一連の抽象クラスとファクトリが含まれているため、ADO.NET ドライバーが存在する限り、接続先のデータベースの種類を考慮する必要はありません。
特定のプロバイダーに縛られないように、ファクトリ メソッドを使用して、使用するさまざまなクラスを新しくする必要があります。
詳細については、このmsdn 記事を参照してください。
もちろん、単に複数の種類のデータベースへの接続を作成してクエリを実行できるだけでは、問題の半分に過ぎません。また、クエリ自体が、使用するデータベースと互換性があることを確認する必要があります。
主要な SQL サーバーによって理解される可能性が高い SQL のサブセットを使用するか、エンティティ フレームワークには、Linq からデータベース固有の SQL を生成する多くのプロバイダーがあります。ただし、これはまだ完全ではありません..サポートしていないプロバイダーによって変換できないクエリを作成することはできます。