問題タブ [provider-independent]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - プロバイダーに依存しないDALを設計する方法
私は現在、クエリビルダーアプリケーションを開発しています。基本的には、SQLの知識がないユーザーがデータベースでさまざまなクエリ(結合、SELECT、INSERT、UPDATE、DELETE)を定義できるようにするシンプルなグラフィカルインターフェイスです。.NET3.5を使用します。私のアプリケーションは複数のデータベースをサポートする必要があり、MS-SQL Server、MySQL、およびOracleで動作する必要があるため、プロバイダーに依存しないDALの設計方法に関するヒントや関連する講義へのリンクをいただければ幸いです。
ユーザーは、データベースサーバー、現在のサーバー上のデータベースを選択し、接続クレデンシャルを提供し、さまざまなテーブルを選択し、クエリを定義し(一連のコンボボックスを使用して)、有効な場合は最後にクエリを実行します。もちろん、DALには、DBプロバイダーごとにメソッドが必要です。ファクトリパターンのラインで何かを考えています。
注:これは単純な学校のプロジェクトであるため、結果のクエリのセキュリティやパフォーマンスには関心がありません。
更新:さらに調査を行い、非常に貴重な情報を提供していただいた後、を使用することにしましDbProviderFactory
た。ORMは興味深いものですが、クエリアナライザー/ビルダーが必要なだけなので、ORMを使用する意味がわかりません。DbProviderFactory
ですから、使い方と関連するクラスの詳細なチュートリアルを教えていただければ幸いです。
.net - .net : DataSet と TableAdapters はデータベースとベンダーに依存していませんか?
構築しているアプリケーションは、データベースに依存しない必要があります。特に、SQL Server、Oracle、および MySQL と連携できるようにする必要があります。今後、他の DB ベンダーがリストに追加される可能性があります。もちろん、どの DB を使用する場合でもスキーマは同じです。
インターフェイスを実証するためのプロトタイプを構築するために、スキーマを SQL Server DB にロードし、そのデータベースの DataSet と TableAdapter を生成しました。データセットはデータベースの特定のインスタンスによって生成されたので、生成された DataSet と TableAdapter はベンダーに依存していないと思われます。さらに、別の SQL Server DB インスタンスに使用できるかどうかさえわかりません。
私の質問は次のとおりです。同じ自動生成された DataSet と TableAdapter を異なるデータベース (およびおそらくベンダー) で使用する方法はありますか?
乾杯、
マルコス
entity-framework - Entity Framework:web.config設定をスイッチプロバイダーに切り替えることができるようにデータアクセスを実装するスマートな方法はありますか?
web.configの単一の設定を使用して、Excelからsqliteまたはmssqlサーバーのmsアクセスに切り替えることができるようにEntityFrameworkにデータアクセス層を実装したいと思います。
これについての良い提案や例はありますか?
sql-server - SQL ServerCompactとSQLServerに同じEFエンティティを使用するにはどうすればよいですか?
2つのモードで動作できるプログラムを作成するプロジェクトがあります。
内部ユーザーは一元化されたデータベース(SQL Server)にアクセスし、お互いのアイテムを表示/編集できます。
外部の顧客は、すべての独自のデータをローカルで作成し(SQL Server Compact)、それを電子メールでXMLにパッケージ化して、見積もりを要求します。
問題は、メンテナンスを最小限に抑え、EF機能を最大化するためにこれを行うための最良の方法は何ですか?また、SQL Serverのストアドプロシージャを書き込み操作に使用したいのですが、問題が多すぎる場合、これは最優先事項ではありません。
展開前に別のSSDLを手動で作成することもできますが、これは余分な作業であり、エラーが発生しやすくなります。モデルファーストに移行することもできますが、両方のプロバイダーのデータベースの更新が複雑になると思います。DbContext Generator T4テンプレートを使用してコードファーストの方向に進むことはできますが、変更の追跡やストアドプロシージャのマッピングなど、EFの多くの利点が失われます。また、CFを使用すると、T4テンプレートを大幅に拡張する必要があります。そうでない場合は、別のSSDLを作成する必要があります。
これを簡単にするための記事やツールはありますか?
編集:これを実現するための最良の方法は、Code Firstを使用してモデルを作成し、新しいコードファーストの移行を使用することでした。移行を使用すると、サーバーインスタンス全体の変更スクリプトを生成でき、ローカルCEデータベースに変更全体を適用できます。もう1つの利点は、接続文字列を完全に制御でき、実際に任意のプロバイダーを指すことができることです。
POCOクラスを手動で作成し、構成クラスを作成し(Fluent APIで定義することをお勧めします)、最初の移行クラスに追加(一意のインデックスなど)を追加するのは少し余分な作業ですが、最終的には最小限に抑えられます。全体的に機能します。
後日、ストアドプロシージャの使用法を回避する方法を理解する必要がありますが、それまでにEF 5が利用可能になる可能性があり、問題は解決しました。