0

これは一般的かつ/または良いアプローチですか?

私のViewModel(Wpf)またはPresenter(WinForms)では、これを行います:

ICustomerService customerService = MyService.GetService<ICustomerService>();
ICustomerList customerList = customerService.GetCustomers();

CustomerService クラスは次のようになります。

public class CustomerService : ICustomerService
{
     public ICustomerList GetCustomers()
     {
        return _customerDataProvider.GetCustomers();
     }
}

public class CustomerDataProvider()
{
    public ICustomerList GetCustomers()
    {
       // Open SQL connection,
       // get back a SqlDataReader and iterate it
       // in the loop write all data into a ICustomer object
       // add the ICustomer object to the ICustomerList
       // return ICustomerList object... 
    }
}
4

2 に答える 2

1

データベースからデータを取得することは、アプリケーションの配管です。そして、自分で書かなければならない配管が少ないほど、生産性が向上します。

私は通常、クライアントで直接 LINQ にアクセスします。

 sp_GetCustomersResult customers;
 using (var db = new DbDataContext(ConnectionString))
      customers = db.sp_GetCustomers();

これはかなりうまく機能し、データベース アクセス レイヤーではなく顧客価値の追加に集中できます。

于 2010-07-05T19:11:36.407 に答える
0

拡張メソッドが使用可能になって以来、ビジネス クラスやカスタム コレクションのインターフェイスを宣言する価値はあまりありません。私はGetCustomers戻ってきたでしょうIEnumerable<Customer>

ビジネス オブジェクトを幅広く使用する予定がある場合は、NHibernateなどのオブジェクト/関係マッパーの使用を検討する必要があります。または、LINQ2SQL または Entity Framework を使用して、記述しなければならない繰り返しの配管コードの量を減らします。

于 2010-07-05T22:12:59.567 に答える