1

シンプルな linq to SQL クエリ 製品オブジェクトが返される場合があります。明らかに、このオブジェクトをビジネス レイヤーに渡し、そのオブジェクトに対して直接データを読み取って更新することができます。

私は、linq クエリの実行に続いて、結果のオブジェクトが (automapper または手動で) カスタム ビジネス オブジェクトにマップされる一連の実装を見てきました。したがって、linq オブジェクトがある可能性のある製品の場合:

product.ProductId および Product.ProductName

次に、カスタム Product ビジネス オブジェクトを次のように定義します。

class BusineszProduct
{
    string ProductId;
    string ProductName;
}

および次のようないくつかの単純なマッピング コード:

BusinessProduct myProduct = new BusinessProduct(); myProduct.ProductId = product.ProductId; myProduct.ProductName = product.ProductName;

次に、myProduct をビジネス レイヤーに渡し、変更し、読み取りなどを行い、後で linq オブジェクトを更新します。

カスタム BusinessProduct クラスを作成するのは、どのようなシナリオですか?

4

2 に答える 2

2

IMHO、一般的な理由は、Linq2SQLエンティティに付属するLinq2SQL ORMバゲージからビジネスエンティティを分離/分離することです

ただし、極端なシナリオでは、複数のマッピングがある場合があります。

  • 「データ アクセス」層の Linq2SQL エンティティ - ただし、これらは L2S DataContext に密接に結合されています
  • POCO / ビジネス エンティティは、ビジネス ルールの適用、検証などに使用されます。
  • Web サービスまたは WCF を使用している場合、データをメッセージ エンティティとして表現することもできます。たとえば、エンティティをネットワーク上でシリアル化するときに、非常に特殊な形式でエンティティを提示する必要がある場合などです。
  • 最後に、MVC / MVP / MVVM UI アーキテクチャを使用している場合は、ビューに合わせてエンティティを調整する必要があります。
于 2010-08-25T21:00:59.967 に答える
0

私のアプリケーションでは、6 つの異なるテーブルを結合し、それぞれからいくつかの列を提供する Linq クエリを実行します。その情報セットに一致するテーブル固有のオブジェクト タイプはありません。したがって、レコード セットを処理するカスタム ビジネス クラスを作成します。

自分で見ることができます(http://www.njtheater.org

Productions日付別にテーブルから選択します。これは、Play テーブル (タイトルと説明を取得する場所)、Troupes テーブル (劇場の会社名を取得する場所)、Venues テーブル (劇場の名前と都市を取得する場所) に結合します。Plays テーブルは、People テーブルに結合する PlayCredits テーブルに結合します (ここで劇作家の名前を取得します)。

于 2010-08-25T20:54:10.813 に答える