この質問を投稿する前に、いくつか調査を行いました。他の質問や投稿の中で、そのうちの1つを以下に示します。どのように判断するか明確な心がつかめなかった。
リポジトリがあり、ビジネスレイヤーはリポジトリを呼び出してデータを取得します。たとえば、BLLとDALの次のクラスがあるとします。
class BllCustomer
{
public int CustomerId {get; set;}
public String Name {get; set;}
public BllAddress Address {get; set;}
}
class BllAddress
{
public int AddressId {get; set;}
public String Street {get; set;}
public String City {get; set;}
public String ZipCode {get; set; }
}
class DalCustomer
{
public int CustomerId {get; set;}
public String Name {get; set;}
public int AddressID {get; set;}
}
class DalAddress
{
public int AddressId {get; set;}
public String Street {get; set;}
public String City {get; set;}
public String ZipCode {get; set; }
}
BLLがCustomerオブジェクトを取得したい場合は、DALでGetCustomerById(customerId)を呼び出します。
以下は私が明確な心をつかむことができなかった私の懸念です:
DALのGetCustomerByIdが返すオブジェクトを決定する方法がわかりません。BllCustomerまたはDalCustomerを返す必要がありますか?
顧客に関連付けられた住所の取得(および/またはビジネスオブジェクトへの変換)はどこにありますか?
DALがDalオブジェクトを返す場合、アドレスを取得して入力するロジックはBLLにのみ存在できます。DALがBLLオブジェクトを返す場合、アドレスを取得して入力するロジックは、BLLまたはDALのいずれかになります。現在、DALはビジネスオブジェクトを返し、それを埋めるロジックはDALにあります。
私が読んだことから、私は正しいか間違っていると思います。上記のリンクから、ある方法で他の人が言う方法があります。しかし、どの方法が私のケースに最適かを判断するにはどうすればよいですか?
任意の助けいただければ幸いです。