0

データベースに接続する Web サービスを構築しています。永続層に EntityFramework ORM を使用する予定です。私は、データベース ファーストのアプローチを使用しており、情報が最も効率的に整理されていると思う方法に基づいてテーブルを設計しています。

ORM は C# でいくつかのデータ エンティティを生成しますが、今度はそのオブジェクト データのサブセットを Web サービス経由でクライアントに送信する必要があります。

例: 次の User テーブルがあるとします: -Id -Username -Company -Password -Email -AdminNotes

そして、ユーザーが他のユーザーに関する情報を要求できるようにしたいが、すべての情報を要求できないとします。したがって、このシナリオでは、パスワードやユーザーに関する AdminNotes を共有したくありません。UserProfile Summary を表す別のクラスを作成し、ORM エンティティから手動で入力する必要がありますか? これらのオブジェクトを設定するために使用する特別なパターンはありますか? または、データのサブセットのみを表す同様の ORM オブジェクトを作成できますか?

それとも、さまざまなインターフェイスを使用してデータ型を表し、単にインターフェイスをシリアル化する必要がありますか?

ASP.NET MVC3 で Web サービスをホストしており、すべてを JSON でシリアル化しています。これらの EF ORM オブジェクトを JSON にシリアル化しようとすると複雑になりますか?

ありがとう!

4

1 に答える 1

1

したがって、このシナリオでは、パスワードやユーザーに関する AdminNotes を共有したくありません。UserProfile Summary を表す別のクラスを作成し、ORM エンティティから手動で入力する必要がありますか?

これらのオブジェクトを設定するために使用する特別なパターンはありますか? または、データのサブセットのみを表す同様の ORM オブジェクトを作成できますか?

はい、ViewModel を作成します。Bounded Contexts の使用を検討することもできます。 選択するアプローチは、使用する予定のデータ アクセスと階層化手法を反映します。ビュー、つまり、Rest または Web サービスおよび MVC アクセスに使用される特別なクラスを持つことは、よく使用されるパターンです。

それとも、さまざまなインターフェイスを使用してデータ型を表し、単にインターフェイスをシリアル化する必要がありますか?

Data Domain モデルをシリアライズする人もいます。他の人はしないことを選択します。プロキシの使用などの要因は、そのような決定に影響します。私は個人的にそれを頻繁に行いません。

ASP.NET MVC3 で Web サービスをホストしており、すべてを JSON でシリアル化しています。これらの EF ORM オブジェクトを JSON にシリアル化しようとすると複雑になりますか?

はい、EF プロキシが使用されている場合、シリアライゼーションで頭痛の種になる可能性があります。ドメインに特別なビューを作成し、多くのマッピング ツールのいずれかを使用してビューにデータを入力したり、ビューから取得したりすると、問題が発生する可能性が低くなり、UI とサービス レイヤーを分離できます。

ドメインクラスに直接基づいたサービスがあると想像してください。DB の変更を反映するようにクラスを変更するとどうなりますか。? 消費者への影響を保護するのは困難です。そうです、ViewModelアプローチを行うことをお勧めします。

この種の設計/アーキテクチャの問題は、非常に長い議論を開始するものです。このトピックに慣れるために、少し調べてみてください。

于 2013-09-24T08:08:59.723 に答える