EntityFramework用法探索(五)引入Unity

简介:

上文的EntityFramework用法中,我们引入了Repository模式和UnitOfWork模式。

探索还没有结束,我们引入Unity依赖注入容器。那用Unity做什么呢?

在上文中,我们手工定义了CustomerRepository中DbContext的,

复制代码
1       DbContext context = new RETAILContext();
2       DbContextAdapter contextAdaptor = new DbContextAdapter(context);
3 
4       IObjectSetFactory objectSetFactory = contextAdaptor;
5       _repository = new Repository<Customer>(objectSetFactory);
6 
7       IObjectContext objectContext = contextAdaptor;
8       _uow = new UnitOfWork(objectContext);
复制代码

但如果表数量过多,手工编码会变得非常繁琐,使用IoC容器提供的功能来解决。

复制代码
 1       IUnityContainer container = new UnityContainer()
 2         .RegisterType(typeof(IRepository<>), typeof(Repository<>), new ContainerControlledLifetimeManager())
 3         .RegisterType<IUnitOfWork, UnitOfWork>(new ContainerControlledLifetimeManager())
 4         .RegisterType<DbContext, RETAILContext>(new ContainerControlledLifetimeManager())
 5         .RegisterType<DbContextAdapter>(new ContainerControlledLifetimeManager())
 6         .RegisterType<IObjectSetFactory, DbContextAdapter>(new ContainerControlledLifetimeManager())
 7         .RegisterType<IObjectContext, DbContextAdapter>(new ContainerControlledLifetimeManager())
 8         .RegisterType<ICustomerRepository, CustomerRepository>(new ContainerControlledLifetimeManager());
 9 
10       ICustomerRepository customerRepository = container.Resolve<ICustomerRepository>();
复制代码

则在CustomerRepository中的配置会简介些,

复制代码
1     public CustomerRepository(IUnityContainer container)
2     {
3       Mapper.CreateMap<DomainModels.Customer, Customer>();
4       Mapper.CreateMap<Customer, DomainModels.Customer>();
5 
6       _repository = container.Resolve<Repository<Customer>>();
7       _uow = container.Resolve<UnitOfWork>();
8     }
复制代码

显然同样的测试代码仍然可以工作,不再赘述。

最后,如果需要可以将UnityContainer注入到ServiceLocator中,以备使用。

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

完整代码和索引

EntityFramework用法探索系列

完整代码下载







本文转自匠心十年博客园博客,原文链接:http://www.cnblogs.com/gaochundong/archive/2013/06/06/entityframework_usage_with_unity.html,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
开发框架 前端开发 .NET
七天.NET 8操作SQLite入门到实战 - (1)第七天BootstrapBlazor UI组件库引入
七天.NET 8操作SQLite入门到实战 - (1)第七天BootstrapBlazor UI组件库引入
|
设计模式 存储 前端开发
在Unity3d中如何使用MVC框架(Unity3D)
MVC是一种比较常见的设计框架,是一种将代码的功能进行划分的一种设计框架,主要原理就是将软件用户界面和业务逻辑分离,以使代码可扩展性、可复用性、可维护性、灵活性加强。 MVC在桌面应用程序,以及网页架构上面用的比较多,那么怎么应用到Unity3d中呢,下面就带大家去了解这个设计框架,以及如何在Unity中应用。
【ThinkPHP5.1】如何引用extend的类库
【ThinkPHP5.1】如何引用extend的类库
593 0
|
Java
【JavaSE】封装基本使用
【JavaSE】封装基本使用
117 0
【JavaSE】封装基本使用
TypeScript 模块 以及模块化封装DB库 封装类似Mongoose风格的类库
TypeScript 模块 以及模块化封装DB库 封装类似Mongoose风格的类库
|
JavaScript 前端开发 容器
走进webpack(2)--第三方框架(类库)的引入及抽离
  正文之前,由于这是一个系列的文章,可能第一次看到的看官老爷们会觉得突兀,如果你是webpack新手,我建议你先从前几篇文章看起,如果你对webpack有一些了解,也希望可以在github上下载代码,对照着看会更有效果   在当代的前端开发中,很少会用原生JS来开发页面,最基本的都会使用jQuery来节省我们开发的时间和效率,而angular,vue,react的出现更是为前端开发者带来了福音。
1742 0

热门文章

最新文章