3

タイトルが示すように、私は現在取り組んでいる調査フレームワークのデータ アクセス レイヤーを設計しています。

私たちは皆、レイヤード アーキテクチャの概念に精通しており、実装に関係なく、ビジネス レイヤーを任意のデータ アクセス レイヤーに接続できるのと同じように、プレゼンテーション レイヤーを任意のビジネス レイヤーに接続できるように、レイヤー間の分離を実現しようとしています。同じインターフェース (同じメソッド) を維持している限り。

ここで、SQL Server を使用してデータベースを構築した後、DataSet (*.xsd) ファイルを使用して DAL を構築します。このファイルで、各テーブル アダプターのメソッドと、データベース内の対応するストアド プロシージャを作成します。

Visual Studio でデータ セット ビジュアル デザイナーをしばらく使用した後、メソッドの形式でユーザーに可能なすべてのクエリを提供する非常に柔軟な API を提供することを目指していることに気付きました。たとえば、可能なフィルターを使用して、またはフィルターを使用せずに、テーブルで検索操作を実行するメソッドをユーザーに提供したい。また、ユーザーが必要な列をフィルターとして使用して行を削除したり、更新したりできるようにしたい必要な列をフィルターとして使用するすべて/個々のフィールド。

私がこれを達成した主な方法は、DDL か DML かに関係なく、考えられるすべてのクエリに対してメソッドを作成することです。今、特定のメソッドで間違いを犯した可能性がある、または高速タイピング中に何も見逃していないことを確認するためにメソッドをチェックしたいと考えると、大量のメソッドになってしまったので、面倒に思えます。

ですから、私の質問は次のとおりです。メソッドのリファクタリングと作成を簡単に行えるように、データ アクセス レイヤーを設計する別の方法はありますか?

あまり詳しく説明していないことを願っていますが、正しい答えが得られるようにあなたを写真に収めたかったのです。よろしくお願いします

4

1 に答える 1

2

ORM ツールを使用して、優れたデータ アクセス レイヤーを提供できます。つまり、ORM ツールを使用すると、SQL Server、Oracle、MySQL、PostgreSql などの一般的なデータベースのほとんどをサポートできるからです。

使用する ORM ツールによっては、SQL ステートメントを記述する必要がないため、クエリのエラーの影響を受けにくくなります。

NHibernateというツールを確認することをお勧めします。この ORM を使用すると、 QueryOverLinqと呼ばれる別のもの (NHibernate に特化したもの)を使用してクエリを作成できます。ダイナミクス クエリを柔軟に記述できます。ORM ツールを使用すると、リポジトリ パターンを実装し、メソッドとクエリを作成して、有効なデータ アクセスを取得できます。

Linqしたがって、このようなものを使用すると、Refecting などの Visual Studio の利点が得られますQueryOver。しかし、SQL ステートメントのような HQL もあります。

この記事を確認してください: DataSets を使用しない理由

于 2012-10-10T11:28:16.820 に答える