Entity Framework (エンティティクラス) のシリアル化
-
19-09-2019 - |
質問
Enitity Framework について読んだ後、いくつか質問があります。
1] エンティティを層間で転送する最良の方法は何ですか? あ] このために軽量の DTO を作成する必要がありますか、それともエンティティを効果的にシリアル化して転送できますか?
b] 効率のために、ライトDTOを作成する必要があり、AutomApperの優れた使用法を見た後、追加のコーディングを節約する方法がよくわかりませんでした(それが目標であれば)、つまり、Flatternクラス(DTO)プロパティを書く必要があるため、CTORのみを保存します。
2] エンティティクラスを構築する意味はありますか 戻る DTOから?
ありがとう。
解決
1 への答え:層間でエンティティを転送する最適な方法は、アプリケーションによって異なります。エンティティのシリアル化は困難ですが、DTO を作成することもできます。これは私の推奨ソリューションです。 可能 ただし、これが実際にやりたいことであることを確認し、覚えておく必要があります。
バイナリ シリアル化と WCF データ コントラクト シリアル化を使用する場合、シリアル化されるオブジェクトのオブジェクト グラフ内に関連オブジェクトがある場合、それらのオブジェクトもシリアル化されます。XML シリアル化では、関連オブジェクトはシリアル化されません。」
Automapper は、次のようなすべての配管ステートメントを記述するのではなく、プロパティを自動的にマッピングすることで機能します。
dto.id = entity.id;
...
all other dto assignment operations
配管コードの量が合計されることがすぐにわかります。特にビュー クラスと dto オブジェクトがある場合は、かなり多くの this = that 行のコードを節約できます。これは私が望んでいたものに完全に適合していることがわかりました。私の知る限り、オートマッパーはエンティティと DTO の間で名前が同じであり、これらのプロパティの型間でマッピングできる場合にのみ機能します。ただし、dto とエンティティが異なる型でデータを保存する場合でも、型間の変換のためのマッピング ルールを追加できます。
2 への答え:オブジェクトを DTO に変換し、上位層で変更する場合、エンティティ フレームワークを通じてオブジェクトをどのように保存し直すつもりですか?通常は、これらを関連エンティティに変換し直すか、新しいエンティティを作成して変更を送信するだけです。
他のヒント
見たいのは RIAサービス. 。まさにこのために作られています。