レイヤ間のデータの受け渡し
.NETアプリケーションを構築する場合は、
3階層の論理レイヤーにする場合が多いかと思います。
【Webアプリケーションの場合】
ブラウザ→プレゼンテーション層→ビジネスロジック層→データアクセス層→データベース
【スマートクライアントの場合】
クライアントアプリケーション→WebサービスIF→ビジネスロジック層→データアクセス層→データベース
.NETの場合、各レイヤー間のデータの受け渡しにはDataSetを流用したほうが良さそうです。
DataSetにはデータバインドなど便利な機能もたくさんあり、
自力でエンティティオブジェクトを作るより生産性が高いだろうと思います。
ビジネスロジック⇔プレゼンテーション間で受け渡すDataSetに
対応するTableAdapterを持たせたくない場合には、
DatSetのMergeメソッドを利用し、データを詰め替えることもできます。
プロセス間であっても、DataSetをそのまま受け渡すことができます。
例えば、データベースで取得した値をWebサービス経由で
そのままWindowsアプリケーションに引き渡すことができます。
(もちろんクライアントが.NET Frameworkベースのアプリケーションで
あることが前提ですが。)
その場合には、データのコピーがクライアントに渡されます。