为什么使用Service AND DataProvider构建数据访问层?

时间:2010-07-15 05:49:08

标签: c# service data-access-layer

喂,

为什么我需要2个课程才能获取数据?为什么DataProvider类不够,如果Service除了调用DataProvider中的方法之外什么都没有?

interface ICustomerDataProvider
inferface ICustomerService

class CustomerDataProvider : ICustomerDataProvider
{
    // Do Sql queries here
    // return sql data and write all DataReader data into customer objects....

   public  IEnumerable<Customer> GetCustomers()
 {
    return ...
 }

}

class CustomerService : ICustomerService
{
    public IEnumerable<Customer> GetCustomers()
  {
       return _customerDataProvider.GetCustomers();
  }    
}

class BillingViewModel
{

  _customerService = Service.Resolve<ICustomer>();

 IEnumerable<Customer> customers = _customerService.GetCustomers();

  Customers = new ObservableCollection<Customer>(customers);

}

1 个答案:

答案 0 :(得分:1)

如果您的服务层只调用数据提供程序中的方法,则表示您的设计存在问题。

数据提供程序用于提取和推送数据。这需要一些小动作。

服务层执行“大动作”,组合小动作。

以保存博客文章为例: 数据提供者单独执行这些

  1. SavePost()
  2. SaveTags()
  3. 而服务层只做一个

     AddPost()
     {
         SavePost();
         SaveTags();
     }