質問

DTO

私館ウェブアプリケーションのような規模の多くのユーザーまた、必要な機能性を信頼できる第三者のWebサービス

を使用していLLBLGenのデータにアクセス層をSQL Server2008).の構築を目指し、ビジネスロジック層シールドのウェブアプリからのダルとはもちろん、レベルの検証を超えてのダル.また、調査を実施しているのは、同じ伝え、現在のWebサービスは本質的にすると薄いラッパーのBLL.

のダルはもちろん、独自の織物、例えば、CustomerEntity,ProductEntityいます。しかし、私たいと思っているプレゼンテーション層へのアクセスがこれらのオブジェクトに対して直接れたダルの具体的な方法の組み立ては特有のダルです。なので、その考え方としては、データを作成し移転オブジェクト(DTO).するのではとの考え方がありますが、基本的に、平旧デザインインタフェース.純チェックをクリックすべての分野においてください"と言っていたら、CustomerEntityは、実際にデータベースのテーブルお客様が他のものを除き、もしかしたIsChanged/IsDirtyます。であるものになる可能性があCustomerDTO,ProductDTO。私はこの行いを継承しながら、DTOクラスです。できると思っていら一部のテンプレートLLBLGenではわかりませんられている。

なので、あまり出現しないと考えるBLLでしかなく、その機能性を受け入れ、帰国されDTOオブジェクト。と思いWebサービスの取扱いを変換しこれらのオブジェクトのXML化の第三者の利用が多く、あたります。純(アトラクションは時代とともにするスクリプトから呼び出AJAXのWebアプリケーションは、JSON).

なんなのか、こいつどのように行きます。この問題:

1)こうした状況が生じているのはお客様(発表資のWebサービスコード)

考えるのが一の公共のクラスは、これらのメソッドは、呼び出しのたびにする原子操作:

InsertDTO,UpdateDTO,DeleteDTO,GetProducts,GetProductByCustomerなど...

そして、お客様の思いでこれらの方法およびパスの適切な引数、通常はDTO.

これは、可能なアプローチを考えていますか。

2)から返されるこれらの方法を教えてください。当然のことながら、Get/フェッチのような方法を返しまDTO.その一方で、挿入します?部署名できる:

InsertDTO(DTO dto)

しかし、挿入する際に私が返却されますか?になりたい通知します。しかし、使っていautoincrementing主キーテーブル(これに対して、別の複数テーブルに天然のキーは特に多いもの).

一つのオプションのことも考えた結果クラス:

class Result
{
    public Exception Error {get; set;}
    public DTO AffectedObject {get; set;}
}

で、挿入、DTOがその取得ID(CustomerDTO.CustomerID)プロパティを設定した後、この結果オブジェクトです。顧客は知ら誤りがある場合は場合は結果です。エラー!= nullの場合、その知を利用して次のように書き換えられる。AffectedObject物件です。

これは良いアプローチを考えていますか。一つの問題は少ないので、工夫が必要かと思い範囲を明らかにするだけ多くのデータを前後には冗長なっているので、ID)。とは思わないを追加すると、"int NewID"プロパティがクリーンもあるので挿入しく制限することはいたしませんautoincrementingキーをするようです。もう一つの問題としてとは思わないWebサービス務を取り扱うことはどうですか?思いつものベースDTOのためのAffectedObjectの結果クラスではなく、由来DTO.ね解消できるのかによって、このような多くの異なる種類の果物(からベースの結果を受け継ぐエラー)が見えないからエリアを表示一部のエリアを表示

すべての権利、こでしかできない語に絶していきたいと思っているが明確でなければならない。

役に立ちましたか?

解決

1:そのかわいらしい標準的アプローチを貸し出すそのものを"リポジトリ"実施のためのユニットテスト容易化。

2:例外が発生するすべきとして宣言された"層"にWCF境界ちなみ)を取得し上げます。だと思うので取扱います。データが共通のアプローチ:

  • 使用 ref の契約のないオープン)
  • の返却(更新)オブジェクトにつ public DTO SomeOperation(DTO item);
  • 返却の更新のアイデンティティ情報(主キー/タイムスタンプなどの

一つのことなどが必要にな種類が異なるた操作(コントラストお Result クラスが必要となる場合がある重複したDTO).

他のヒント

Q1:あなたはこの問題を解決するためのDTOとして、あなたのWCFデータ契約の複合タイプと考えることができます。この方法は、あなたのUI層は唯一のDataContractのデータメンバーのプロパティにアクセスすることができます。あなたのアトミック操作は、あなたのWCFインターフェイスによって公開された方法になります。

Q2:あなたの主キーなどの新しいカスタム型を返すために、あなたのレスポンスデータコントラクトを設定し... WCFはまた戻ってUIにバブル例外に設定することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top