Lind.DDD.Repositories.EF层介绍

简介:

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<Task_Info> taskRepository;
        public UserService()
        {          
            taskRepository = ServiceLocator.Instance.GetService<IExtensionRepository<Task_Info>>();
            taskRepository.SetDataContext(Db);
        }
  <unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
    <container>
      <!--泛型类型注入-->
      <register type="Lind.DDD.IRepositories.IRepository`1,Lind.DDD" mapTo="Lind.DDD.Repositories.EF.EFRepository`1, Lind.DDD.Repositories.EF" />
      <register type="Lind.DDD.IRepositories.IExtensionRepository`1,Lind.DDD" mapTo="Lind.DDD.Repositories.EF.EFRepository`1, Lind.DDD.Repositories.EF" />
    </container>
  </unity>

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

本文转自博客园张占岭(仓储大叔)的博客,原文链接:Lind.DDD.Repositories.EF层介绍,如需转载请自行联系原博主。

目录
相关文章
|
Web App开发 开发者
利用chrome控制台调试post请求
利用chrome控制台调试post请求
680 0
|
前端开发 JavaScript UED
深入理解requestAnimationFrame函数及其应用
深入理解requestAnimationFrame函数及其应用
|
Java Maven
MapStruct - Lombok & Maven 版本关系
MapStruct - Lombok & Maven 版本关系
2147 0
|
人工智能 安全
openAI的Red Team
openAI的Red Team
436 3
|
11月前
|
人工智能 自然语言处理 计算机视觉
华为鸿蒙自己家的“AI”编辑器插件用起来到底怎么样?
编辑器AI插件如Codegeex、通义灵码等已问世,但通用性较强而不专精。华为推出的CodeGenie专为鸿蒙开发设计,集成在DevEco 5.0.0以上版本中,提供代码补全、生成等功能,尤其擅长处理鸿蒙相关问题,极大降低了鸿蒙开发的门槛。安装后需重启,支持自然语言生成代码,提升了开发效率。
621 13
|
机器学习/深度学习 人工智能 前端开发
2024年软件开发新趋势:关键技术和实践
2024年软件开发迎来新趋势,涵盖AI/ML深度集成、微前端架构进展、单元测试最佳实践及CI/CD最新动态,推动产品质量、效率和创新的提升。
执行npm run dev的时候发生了什么
执行npm run dev的时候发生了什么
1242 60
IDEA 利用groovy脚本生成注释
【10月更文挑战第29天】在 IntelliJ IDEA 中,可以通过创建和运行 Groovy 脚本来自动生成 Java 类方法的 Javadoc 注释。首先,创建一个 Groovy 文件并编写脚本,该脚本会检查每个方法是否已有注释,如果没有,则生成包含方法描述、参数列表和返回值的基本注释。接着,通过“Tools”菜单下的“Groovy Console”运行脚本,确保脚本中的包版本与当前使用的 IntelliJ IDEA 版本匹配。运行后,脚本将自动为选定类的方法添加注释。建议在执行前备份代码,以防意外。
463 2
|
人工智能 JSON 决策智能
crewAI:一个让 AI 助手们像团队一样协作智能框架
crewAI:一个让 AI 助手们像团队一样协作智能框架
1200 0
|
域名解析 监控 网络协议
Ping命令的替代工具有哪些?
【8月更文挑战第14天】Ping命令的替代工具有哪些?
1010 2

热门文章

最新文章