EntityFramework用法探索(六)静态Repository

简介:

上文中,我们引入了Unity,用来帮助构建各个Repository和UnitOfWork。

同时,我们将UnityContainer注入到了ServiceLocator的实现中,

1       UnityServiceLocator locator = new UnityServiceLocator(container);
2       ServiceLocator.SetLocatorProvider(() => locator);

如果表数量过多,将IxxxRepository注入到业务类中过于繁琐,为寻求简洁办法,此处引入ServiceLocator和静态类,虽然这两种方式都不太适合单元测试。

复制代码
 1   public static class Repository
 2   {
 3     public static IRepository<Customer> Customers
 4     {
 5       get { return ServiceLocator.Current.GetInstance<IRepository<Customer>>(); }
 6     }
 7 
 8     public static void Commit()
 9     {
10       ServiceLocator.Current.GetInstance<IUnitOfWork>().Commit();
11     }
12   }
复制代码

如果我们有新的表定义,仅需新增一个属性即可。例如新增个供应商表Supplier。

1     public static IRepository<Supplier> Suppliers
2     {
3       get { return ServiceLocator.Current.GetInstance<IRepository<Supplier>>(); }
4     }

这样,我们的业务代码可以变得简洁些,

复制代码
 1     public void InsertCustomer(DomainModels.Customer customer)
 2     {
 3       Customer entity = Mapper.Map<DomainModels.Customer, Customer>(customer);
 4 
 5       Repository.Customers.Insert(entity);
 6       Repository.Commit();
 7 
 8       customer.Id = entity.Id;
 9     }
10 
11     public void UpdateCustomer(DomainModels.Customer customer)
12     {
13       Customer entity = Repository.Customers.Query().Single(c => c.Id == customer.Id);
14 
15       entity.Name = customer.Name;
16       entity.Address = customer.Address;
17       entity.Phone = customer.Phone;
18 
19       Repository.Customers.Update(entity);
20 
21       Repository.Commit();
22     }
复制代码

完整代码和索引

EntityFramework用法探索系列

完整代码下载






本文转自匠心十年博客园博客,原文链接:http://www.cnblogs.com/gaochundong/archive/2013/06/06/entityframework_usage_static_repository.html,如需转载请自行联系原作者

目录
相关文章
|
Java
面向对象--继承 demo(二)
面向对象--继承 demo(二)
140 1
|
Java C++
面向对象--继承 demo(一)
面向对象--继承 demo(一)
120 1
|
Java Spring
Spring-注入参数详解-[通过util命名空间简化集合类型的配置]
Spring-注入参数详解-[通过util命名空间简化集合类型的配置]
135 0
|
数据挖掘 Python
4.【.netcore Configuration】理解Configuration中Section弱方式读取和Binder模式的强类型读取代码
4.【.netcore Configuration】理解Configuration中Section弱方式读取和Binder模式的强类型读取代码
130 0