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 或实体框架来减少您必须编写的重复管道代码的数量。

于 2010-07-05T22:12:59.567 回答