最近、新しい Web フォーム プロジェクトを開始し、ビジネス クラスを DBML 参照から分離することにしました。私のビジネス層クラスは代わりに個別のデータ層メソッドにアクセスし、DTO のコレクションを返します。したがって、データ層は次のような DTO を投影する場合があります。
(from c in dataContext.Customers
where c.Active == true
select new DTO.Customer
{
CustomerID = c.CustomerID,
Name = c.CustomerName,
...
}).ToList()
DTO オブジェクトを構築すると作業が増えますが、これはビジネス レイヤーとデータ レイヤーを緊密に結合するためのより良いアプローチのように感じられ、データベースが存在しなくてもビジネス レイヤーをテストできることを意味します。
私の質問は、これは良い習慣ですか?、DTO を生成する方法 (おそらく SQLMetal 経由) はありますか? また、プロジェクトが進行するにつれて、他にどのような問題が発生する可能性がありますか?