BLL と DAL の間の非常に厳密な境界を持つ小さなアプリを作成しようとしていますが、レイヤー間でデータ (ドメイン転送オブジェクト) を渡す最善の方法は何だろうと思っています。
BLL と DAL の両方からアクセスされるドメイン レベル (クラス ライブラリ) にいくつかのクラスを実装しました。これらのクラスは、基本的にプロパティ/データ メンバーのみを含み、現在 DAL データを反映しています。元:
class CustomerData
{
// some data fields
}
次に、BLL にいくつかのクラスを次のように実装しました。
class Customer : CustomerData
{
// Some methods
}
私の DAL では、Linq-to-Sql を介してデータベースから顧客レコードを取得します。次に、次の方法で linq オブジェクトを Domain オブジェクトにマップします。
CustomerData.field = LinqObject.field
// Etc
したがって、私の考えでは、要求されたときに DAL から BLL への CustomerData インスタンスになりました (そして、Customer インスタンスを UI に渡す必要があります)。
私の BLL では、このように CustomerData インスタンスを受け取りますが、今はそれから Customer を作成したいと考えています。
質問:
- BLL で Customer インスタンスを作成し、もう一度すべてのフィールド メンバーをコピーする必要がありますか?
顧客 c = 新規顧客。c.field = CustomerData.field; - フィールド コピーの手順を実行せずに、CustomerData から Customer を作成するにはどうすればよいですか?
- ではなく、合成を使用する必要がありますか?
class Customer { CustomerData データ; } - 現在のレイアウトでこれを行うためのより効果的な方法 (コーディングを減らすなど) はありますか?
- これを行うためのより良い方法はありますか?
- 一般的なコメントはありますか?
ありがとう !