3

これは恥ずかしいほど基本的な n 層の質問です。

サブソニックを使用して VS2008 で DAL プロジェクトを作成しました。ウィジェット クラス、widgetcollection クラス、widgetcontroller クラスがあります。

それを参照するビジネス ロジック プロジェクトを作成しました (同じ層に配置することはできません)。特定のビジネス基準を使用して、widgetcollection を返す関数でウィジェットのコレクションを選択します。

私の質問は、GUI レイヤーがコレクションをグリッドにバインドする方法を教えてください。ウィジェットコレクションがデータグリッドの有効なデータソースであることはわかっていますが、GUI レイヤーはウィジェットとウィジェットコレクションが何であるかをどのように認識していますか? 確かに、GUI から DAL を参照する必要はありません。これは、要点全体を否定します。

4

4 に答える 4

0

(SubSonic 2.xを使用)私のBLLクラスには、関連するDALクラスへのオブジェクト参照を提供するプロパティがあります。私のUIフォームにはBLLクラスへの参照があるため、フォームから.BLL.DAL.xxxxを介してDALのプロパティとメソッドをアドレス指定できます。

FWIW、SubSonicコレクションをDataGridViewに正常にバインドできたことはありません。別の方法として、collections .ToTable()メソッドを使用してDataTableを作成してからバインドすることも、.AddRow()を使用して手動でバインドすることもあります。

于 2009-06-16T12:34:54.440 に答える
0

おそらくインターフェースを使用する必要があります。Dalのウィジェットに基づいてインターフェイスを簡単に作成できます(クラスを右クリックして、クラスからインターフェイスを作成します)。次に、インターフェイスを取得して、ビジネスロジックレイヤーまたはインターフェイス専用の別のプロジェクトに追加します。これが完了したら、DALとGUIの両方でインターフェイスへの参照を追加できます。これは、データストレージをデータベースからXMLなどに変更する場合にも役立ちます。

于 2009-06-17T14:23:53.543 に答える
0

まず、これは恥ずかしいほど基本的な n 層の質問だとは思いません。これは非常に興味深いテーマであり、以前の Subsonic Forums で議論を刺激しようと試みたものです。

私の GUI レイヤーを DAL に公開することに抵抗があるのはあなたと同じです。

私の GUI レイヤーは、独自のエンティティ モデルの語彙とトピックを使用して BLL とのみ対話し、独自のエンティティまたはリスト、場合によってはデータ テーブルのみを返します。

私のBLLは、フェッチ、保存などを適切なDAL CRUDメソッドにマップし、返されたサブソニックタイプをエンティティタイプに変換するMAPpingレイヤーとのみ通信します。

これを行う際に、Subsonic をどれだけ複製しなければならなかったかに驚きました。また、間違った道を進んでいると感じることもありました。今では、リファクタリングと改良が必要ですが、より快適に使用できるようになりました。

たとえば、フェッチで返される行を BLL に示す柔軟で汎用的な手段を見つけることは、予想していなかった課題でした。サブソニックセレクト。

FWIW、あなたは正しい道を進んでいると思いますが、あなたがしなければならないことは、これらの Subsonic タイプを GUI に定義する方法を決定することだと思います。

ロブは、あなたが興味を持つかもしれない興味深い議論をしています.

于 2009-06-19T04:33:19.153 に答える
0

MSDN の IBindingList インターフェイスのドキュメントを見てください。かなり良いサンプルがあります。たとえば、BLL で Customer クラスを使用するモデルで CustomersList クラスを作成します。グリッドを CustomersList クラスのインスタンスにバインドします。プレゼンテーション レイヤーには、亜音速テーブル クラスに関する知識がありません。

于 2009-06-16T23:44:19.270 に答える