2009-03-15 2 views
1

これは私の最初の質問です。穏やかです:)。イムは、次の操作を実行しようとしている分散architecture.Imのいくつかの種類でプロジェクトに取り組んで:C#DTOとLINQ2SQL

  1. 私は がLINQ2SQL

  2. を使用していることをデータアクセス層を有していても、私はサービスを持っていますは、データアクセス層のための プロキシです。

  3. 私は が エンティティのためのサービス層を呼び出すビジネスレイヤを持っています。

    これらのLINQ2SQLエンティティをビジネスレイヤにどのように転送できますか?

  4. 私は ビジネス層にこれらのオブジェクトを変更し、 データベースの変更を永続化する エンティティをLINQ2SQLするサービス層 と再変換彼らとバック 旅行をしたいです。

    イムイムは、いくつかのIMPOSIBLEを求めたが、Imはbeestの方法を把握しようとしているが、私は自分自身にインテリジェント何かを得るカント:)

    よろしく場合は申し訳ありません!

+0

答えはあなたの質問です - DTOを使用してください。だから、どうしたの? –

答えて

3

2つの異なるコンテキスト、BusinessLogicコンテキストとデータアクセスドメインがあるように私に聞こえます。あなたはおそらく変圧器/文脈マッパを必要とするでしょう。

パブリッククラスContextMapper {公共BusinessLogic.Customerコンバート(DataAccess.Customer顧客) {

}パブリックDataAccess.Customerコンバート(BusinessLogic.Customer顧客) {

}

あなたが好きなら、これらを拡張メソッドとして書くこともできます

}

+0

ありがとう!それは素晴らしいアイデアです、私はBL層にこのマッパーを入れ、同様にBLのLinQ2Sqlへの参照を持っていますか? – MRFerocius

+0

レイヤードアーキテクチャを使用しているため、ビジネスロジックとDALの間に循環参照がないようにしたい(BLオブジェクトをDALオブジェクトにダウンストリームに変換したい場合やDIRオブジェクトをアップストリームに変換する場合)、戦略を検討する必要があります依存性反転のために。 – user35559

0

NHibernateやその他の高度なORMが必要なようです。

+0

しかし、私はDALでLinq2Sqlを使用しています。レイヤ間でオブジェクトを渡し、BLで使用する場合は、サービスレイヤーをデータアクセスレイヤーのプロキシとして使用してください。 迷惑メールの種類:( ありがとうございます! – MRFerocius

+0

Linq2Sqlを使用しているということは、DALとBLを分離できないということです。エンティティまたはドメインオブジェクトは、linqデータコンテキストと同じアセンブリ内になければなりません。これはlinq2sqlの動作方法です。 –

+0

もちろん、BLからあなたのDALへの参照を追加しない限り。その場合、サービスレイヤーを持つことはできません。 –