いいえ、関心の分離について読んではいけません。各クラスを変更する理由は1つだけです。ビューモデルは、ビューに表示されるモデル情報の変換のみを担当する必要があります。
データストアからモデルインスタンスを取得するには、別のサービス実装が必要です。
例えば:
public class MyViewModel
{
private readonly ICustomerRetrieval _retrievalService;
public MyViewModel(ICustomerRetrieval retrievalService)
{
_retrievalService = retrievalService;
}
public IEnumerable<CustomerViewModel> Customers
{
get { return _retrievalService.GetAllCustomers().Select(AsViewModel);
}
private CustomerViewModel AsViewModel(CustomerModel cust)
{
return new CustomerViewModel(cust);
}
}
サービスが顧客モデルの検索を担当しているのに対し、ビューモデルはこれらをUIから使用可能なものに変換するだけであることがわかります。