博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lind.DDD.Repositories.EF层介绍
阅读量:5937 次
发布时间:2019-06-19

本文共 1264 字,大约阅读时间需要 4 分钟。

Lind.DDD.Repositories.EF以下简称Repositories.EF,之所以把它从Lind.DDD中拿出来,完全出于可插拔的考虑,让大家都能休会到IoC的魅力,用到哪种方法持久化,就将那个DLL放到应用程序中,完全不需要把所有持久化方式耦合到一个项目里,这也是遵循了OCP的原则,对扩展是开放的,即你可以添加其它的持久化方式,在新的项目里;而不要在原有的项目中进行代码的修改.

Repositories.EF做为数据持久化的一种方式,它直接继承了Lind.DDD.IRepositories接口模块,它实现了IRepository,IExtensionRepository和IOrderableRepository等仓储操作,开发人员在使用时,可以根据自己的需要去声明不同的接口变量,以最小程度的使用它,而不是所以时候都使用IExtensionRepository的完整接口,如你的类中只用到了实体的添加,那你完全可以把对象声明成IRepository基本仓储,这样你的使用时,也更加清楚.

Repositories.EF项目结构很简单,只有一个Repository的实现,看一下结构图

它内部使用了IExtensionRepository接口,由于IExtensionRepository同时继承了IRepository和IOrderableRepository,所以,EF在实现它时,这两个基接口也会现时被实现.

其实对于方法内部的实现,大叔之前的文章中已经介绍很多了,大叔可以自已进行查阅,之后这个Repositories.EF仓储在实现项目中不会出现,它只会通过IoC在程序运行时动态生产出来,这点大叔要清楚,不要把Repositories.EF引用到你的项目中使用,这样你的项目将会变得非常僵化,很被动,持久化无法自动切换,这点要注意!

在具体项目中使用时,我们可以通过web.config去定义你持久化的方式,在程序使用时,直接用Lind.DDD.IoC.ServiceLocator服务定位器即可.

IExtensionRepository
taskRepository; public UserService() { taskRepository = ServiceLocator.Instance.GetService
>(); taskRepository.SetDataContext(Db); }

最后,我们非常希望各位同学都学有所成...

转载于:https://www.cnblogs.com/lori/p/5076225.html

你可能感兴趣的文章
axios 拦截 , 页面跳转, token 验证(自己摸索了一天搞出来的)
查看>>
有序的双链表
查看>>
Linux系统启动流程详解
查看>>
测试人员必学的软件快速测试方法(二)
查看>>
程序员全国不同地区,微信(面试 招聘)群。
查看>>
【干货】界面控件DevExtreme视频教程大汇总!
查看>>
闭包 !if(){}.call()
查看>>
python MySQLdb安装和使用
查看>>
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>