0

主にデータベースと通信する Web アプリケーションを c# で設計しています。データベース内のテーブルごとに DTO を作成しました。現在、各テーブルには、その特定のテーブルに関連するすべての保存とフェッチを行うカスタム テーブル リポジトリ クラスがあり、そのためにストアド プロシージャを使用しています。

問題は、一部のストアド プロシージャが実際に内部結合操作を実行し、2 つのテーブルの組み合わせであるカスタム出力を送信することです。

したがって、データを単一の DTO オブジェクトに格納することはできません。

ほとんどが単一のテーブルで行われる基本的な操作がある場合、問題はありません.データベースからの挿入とフェッチの両方で、テーブル dto オブジェクトを呼び出すことができます。ただし、ストアド プロシージャに結合がある場合や、特定の状況で複数のテーブルを更新する場合があります。

アプリをどのように設計する必要がありますか?

助けてください

ありがとう

4

1 に答える 1

2

データベース内の各テーブルに直接対応する DTO を持つことを再考したいと思うかもしれません。

むしろ、DTO は、Web サイトの背後で使用される実際のモデルの論理的なものに対応する必要があります。したがって、たとえば、Customer オブジェクトには、データベース内の 2 つのテーブルに論理的に格納されている場合でも、注文 ID のコレクションが含まれる場合があります。

DTO が他の DTO を参照することは何も悪いことではありません (実際、しばしば不可欠です)。そのため、たとえば、Address クラスのリストを指す Customer クラスを持つことができます。

物事がより複雑になる場合は、この時点で、DTO にマップされる真の「ドメイン オブジェクト」を使用して別のレイヤーを導入することを検討することをお勧めします。これは、その音から「持続オブジェクト」です。

于 2009-11-25T14:21:05.620 に答える