問題タブ [dto-mapping]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
3207 参照

c# - ドメイン (ORM) オブジェクトからデータ転送オブジェクト (DTO) へのマッピング方法に関する提案

私が取り組んでいる現在のシステムでは、Castle Activerecord を利用して、ドメイン オブジェクトとデータベース間の ORM (オブジェクト リレーショナル マッピング) を提供しています。これはすべてうまくいき、ほとんどの場合、実際にうまく機能します。

この問題は、Castle Activerecords の非同期実行のサポート、具体的にはオブジェクトが属するセッションを管理する SessionScope で発生します。要するに、悪いことが起こります!

そのため、ドメイン オブジェクト (DB が存在することを知っていて気にする) から DTO オブジェクト (DB について何も知らず、セッション、マッピング属性などを気にしない) に簡単に変換する (自動的に考える) 方法を探しています。 ORM)。

誰でもこれを行うことについて提案がありますか。まず、オブジェクトの基本的な一対一のマッピングを探しています。ドメイン オブジェクトPersonはPersonDTOと言うようにマッピングされます。もったいないので手動でやりたくありません。

当然反省が頭に浮かびますが、このサイトに出回っているより優れた IT 知識から、「よりクールな」 提案が得られることを期待しています。

ああ、Castle ActiveRecord にマップされる前に述べたように、ORM オブジェクトである C# で作業しています。


コード例:

@ajmastrean のリクエストにより、私が (ひどく) 一緒に嘲笑した例にリンクしました。この例には、キャプチャ フォーム、キャプチャ フォームコントローラドメインオブジェクト、activerecordリポジトリ、および非同期ヘルパーが含まれています。実行に必要な ActiveRecored dll を含めたため、少し大きい (3MB) です。ローカル マシンにActiveRecordAsyncというデータベースを作成するか、.config ファイルを変更する必要があります。

例の基本的な詳細:

キャプチャフォーム

キャプチャ フォームにはコントローラへの参照があります

フォームの初期化時に MyController.Load() private void InitForm () { MyController = new CompanyCaptureController(this); を呼び出します。MyController.Load(); これは LoadComplete() というメソッドに戻ります

これは、遅延ロードとして設定された Company の子リストを使用しているため、 「悪いこと」が発生する場所です。

コントローラー

コントローラーには、フォームから呼び出された Load メソッドがあり、Asyc ヘルパーを呼び出して LoadCompany メソッドを非同期的に呼び出し、Capture フォームの LoadComplete メソッドに戻ります。

LoadCompany() メソッドは、単純にリポジトリを利用して既知の会社を見つけます。

例の残りの部分は一般的なもので、基本クラスから継承する 2 つのドメイン クラス、データを挿入するためのセットアップ ファイル、およびActiveRecordMediator機能を提供するためのリポジトリがあります。

0 投票する
2 に答える
2904 参照

c# - Linq To SQL と DTO で懸念事項を分離する

最近、新しい Web フォーム プロジェクトを開始し、ビジネス クラスを DBML 参照から分離することにしました。私のビジネス層クラスは代わりに個別のデータ層メソッドにアクセスし、DTO のコレクションを返します。したがって、データ層は次のような DTO を投影する場合があります。

DTO オブジェクトを構築すると作業が増えますが、これはビジネス レイヤーとデータ レイヤーを緊密に結合するためのより良いアプローチのように感じられ、データベースが存在しなくてもビジネス レイヤーをテストできることを意味します。

私の質問は、これは良い習慣ですか?、DTO を生成する方法 (おそらく SQLMetal 経由) はありますか? また、プロジェクトが進行するにつれて、他にどのような問題が発生する可能性がありますか?

0 投票する
1 に答える
3227 参照

performance - Web サイトのパフォーマンスの観点から見た DTO の長所と短所は何ですか?

Web サイトのパフォーマンスの観点から見た DTO の長所と短所は何ですか? (データベースがWebサーバーとは別のアプリサーバーでアクセスされ、Webサーバーがデータベースに直接アクセスできる場合について話しています。)

0 投票する
4 に答える
4306 参照

web-services - DTO からエンティティ、エンティティから DTO に簡単に変換できますか?

私は最近、いくつかの分散型クライアント/サーバー プロジェクトに取り組んできましたが、DTO オブジェクトをエンティティに、またはその逆に変換するときに常に遭遇する問題の 1 つです。このタイムシンクに対する「簡単な」解決策を誰かが持っているかどうか疑問に思っていましたか?

私が考えたことの 1 つは、リフレクションを使用してある種の翻訳を考え出すことでした...プロパティ名がワイヤの両側でまったく同じであることを確認する必要があると思いますが、うまくいくようです。

この時間の一部を私の開発に費やすのを避ける方法を探しています。

ありがとう!!

0 投票する
3 に答える
1923 参照

asp.net - AutoMapperの問題

いくつかのオブジェクトを自動マップしようとしています。
ソース オブジェクトには名前の前に _ が付いたプロパティがありますが、宛先オブジェクトにはありません。オートマッパーがすべての _properties を
すべてのソースタイプのプロパティにマップする 1 つのマップ作成を実装することは可能ですか?

0 投票する
2 に答える
1753 参照

c# - リスト間のAutoMapper自動リスト変換をオフにするにはどうすればよいですかおよびEntitySet?

AutoMapper を使用して、Linq-To-SQL で生成されたエンティティを DTO にマッピングしています

最初に単体テストを作成したとき、特定のマップを (静的構成クラスを介して) セットアップして、1 つのタイプの EntitySet を汎用の List に (およびその逆に) 変換しました。

リストの変換を削除すると (AutoMapper がこれらを自動的に変換することを理解すると)、単体テストは引き続き機能しましたが、クロールが遅くなりました。非常に遅く、各テストを実行するのに文字通り 1 分かかりました。

リスト マッピングを再度追加した後、単体テストは通常​​のパフォーマンス速度に戻りました。

リストの変換をマップする必要があるように、リストの自動変換をオフにする方法はありますか? Map を含めなかった場合に AutoMapperException をスローするようにしたいと思います。これらのパフォーマンスの問題を回避したいと思います。

さらに悪いことに、DTO に基づいてマッピング構成クラスを自動的に作成するための簡単なコード生成テンプレートを作成することになるかもしれません。そうすれば、私は何も見逃すことはありません。

ありがとう。

0 投票する
3 に答える
31605 参照

guice - Bean マッピングのためのドーザーの代替?

定型コードなしで DTO をエンティティにマップする簡単な方法を見つけようとしています。dozer を使用することを考えていましたが、多くの xml 構成が必要なようです。純粋な Java で Bean マッピングを構成するために DSL を使用する dozer の代替を見た人はいますか?

理想的には、Guice のやり方に触発された Bean マッパーを見つけたいと思っています。

0 投票する
2 に答える
328 参照

java - 値オブジェクトのクレイジーな継承階層のリファクタリング-すべてのフィールドとタイプのリストを取得する方法は?

したがって、基本的に、継承階層を手動で調整する必要があります。クラスが完璧で、余分なフィールドがなく、単なるDTOであることが望まれます。ただし、迷子になったり、重複するフィールドを追加したりするのは非常に簡単で、探しているものがすでにそこにあるかどうかを確認するのは非常に困難です。私が本当に望んでいるのは、継承されたフィールド(プライベートも含む)を含む、クラス内のすべてのフィールドを一覧表示する方法です。ゲッターやセッターがすべてを乱雑にしない、フラットなフィールドのみのビューのように。

右クリック/ファイルメンバーを使用してNetBeansで表示する方法を見つけましたが、コピーして貼り付けてテキストファイルなどに保存することはできません。

基本的にこれらの列だけです:

誰かがそれを行う方法、または私がやろうとしていることを行うためのより良い方法を知っていますか?

0 投票する
1 に答える
425 参照

java - NHibernateフェッチ/オートマッパーの問題

さて、現時点で問題があります。これは、AutoMapper、NHibernateクエリ、またはドメイン/DTO設計のいずれかにあります。

私が抱えている問題は、フェッチを実行すると、たとえばObjectAにはObjectBのリストが含まれ、ObjectBにはその親ObjectAのプロパティがあることです。ObjectAのObjectBプロパティを熱心にフェッチするクエリがある場合、ABAbABABなどを無限に続けることができます。

これは、ドメインオブジェクトを同じ取引を含むDTOAにマップしようとすると、DTOAにはDTOBのリストがあり、DTOBにはその親DTOAのプロパティがあることを意味します。AutoMapperを使用してDomainAをDTOAにマップしていると思われるため、またDTOA.DTOB.DTOA.DTOBなどが無限にシリアル化されているため、これを返すときにサービスがタイムアウトします。

とにかく、私が確信していることに対する最善の解決策は、古くからの古典的な問題ですが、私は私の古い友人のグーグルに入力するための正しいものを見つけるのに苦労しています。AutoMapperに子の親インスタンスを無視させることはできますか?できれば、Nhibernateにリストをフェッチさせても、親プロパティにプロキシを保持させることができればと思います。最悪の解決策は、特定のシナリオまたは特殊なロジックのオブジェクトを使用したドメインオブジェクトの変更です。

どんな助けでも感謝します。

編集-コード

マッピングコード

ドメインオブジェクトDomainA

ドメインオブジェクトDomainB

}

Nhibernateクエリ

WCFサービスのreturnステートメント

フェッチを使用してクエリを実行し、dtoドメイン構造と自動マッパー構成を実行すると、サービスがエラーなしでタイムアウトします。シリアル化を試み、フェッチとリストがnullになることなく、無限にループしていると思いますが、もちろんすべて正常に機能します。