0

クラス ライブラリを作成して、linq を SQL クラスに追加し、いくつかのテーブルをドラッグします。別のクラス ライブラリを作成し、上記のプロジェクトに ref を追加し、GetCustomers への簡単な関数を作成します (dim query = from c in customers select c return c.toList) 次に、Vb .Net Web アプリを追加し、2 番目のクラスに ref を追加します。ライブラリを作成し、GetCustomers メソッドを呼び出します。正しくないと思われる linq to SQL データ モデルを含むクラスへの参照を追加するようにというエラー メッセージが表示されました。

これらのレイヤーを正しく分離するにはどうすればよいですか? 記事や Vb .Net のコードをいただければ幸いです。

ありがとう

4

3 に答える 3

1

LINQ to SQL モデルを使用するには、明示的に参照する必要があります。別の参照から参照を推測することはできません。

これを回避する方法は、DTO とビュー モデルを使用することです。

  • このシナリオでは、Web アプリは中間層でリポジトリを呼び出します。
  • 中間層はエンティティのデータ層を呼び出します
  • データ層は中間層に実体を与える
  • 中間層はエンティティをデータ転送オブジェクトに変換し、それを Web アプリに返します
  • Web アプリはデータ転送オブジェクトを使用して、エンティティの状態を中間層に伝達します
  • Web アプリは DTO をプレゼンテーション用のビュー モデルに変換します。

これはかなり一般的な概要です。基本的に、各レイヤーはデータがどのように見えるかについて独自のアイデアを持ち、変換方法について他のレイヤーと契約を結んでいます。他の人は私よりもうまく説明できます。これは、N 層アーキテクチャに関する非常にまともな記事です。

于 2012-12-18T22:17:42.140 に答える
1

データ クラスは Linq to SQL クラス ライブラリで定義されているため、これらのクラスが何であるかを知るために、Web アプリはそれへの参照を必要とします。

レイヤーを完全に分離するには、Linq to SQL クラスを使用して、2 番目のクラス ライブラリに個別の転送オブジェクトを作成する必要があります。

automapperのようなツールは、そこで非常に役立ちます。

于 2012-12-18T22:12:05.563 に答える
0

関数が List(Of Customers) 型として値を返すように思えます。この場合、Customers 型は最初のクラス ライブラリで定義されています。

プロジェクトが「データ」、「ビジネス」、および「UI」と呼ばれていると仮定すると、UI プロジェクトでデータ クラス ライブラリを参照したくない場合、ビジネス プロジェクトはデータから結果をコピーまたは提示する必要があります。 UIが使用できるようにビジネスで定義されたフォーム。それ以外の場合、UI は、最終的にビジネスに対してのみ呼び出しを行う場合でも、型定義のためだけに Data を参照する必要があります。

于 2012-12-18T22:13:22.620 に答える