\

关键要点:

\

  • Dapper这类微ORM(Micro-ORM)虽然提供了最好的性能,但也需要去做最多的工作。\
  • 在无需复杂对象图时,Chain这类Fluent ORM更易于使用。\
  • 对实体框架(Entity Framework)做大量的工作后,其性能可显著提高。\
  • 为获得数据库的最大性能,需要采用可能会有些繁琐的投影(Projection)操作。\
  • ORM整体上的局部更新可能会存在问题。

\

在现代企业开发中,可采用多种方法构建数据存取层(data access layer ,DAL)。使用C#做开发时,DAL的最底层几乎总是使用ADO.NET。但这时常会形成一个笨重的库,所以通常会在DAL的底层之上再部署一个ORM层。为允许模拟和隐藏ORM的细节,整个DAL包装在存储内。\

在这一系列的文章中,我们将审视三种使用不同类型ORM构建仓储模式的方法,分别是:\

  • 实体框架:一种传统的“全特性”或“OOP”类型的ORM。 \
  • Dapper:一种主要专注结果集映射的轻量级微ORM。 \
  • Tortuga Chain:一种基于函数式编程理念的Fluent ORM。

本文将侧重于开发人员可在典型仓储中用到的那些基本功能。在本系列文章的第二部分,我们将着眼于那些开发人员基于实际情况而实现的高级技术。\

插入(Insert)操作

\

对于任何CRUD操作集,通常会首先实现基本的插入操作,进而可用插入操作对其它的操作进行测试。\

Chain

\

Chain使用列名和属性名间的运行时匹配。对于在数据库中并不存在的对象,除非启用了严格模式(strict model),否则将忽略该对象上的属性。类似地,没有匹配属性的列不能成为生成SQL的组成部分。

public int Insert(Employee employee)\        {\            return m_DataSource.Insert(\"HR.Employee\

使用实体框架、Dapper和Chain的仓储模式实现策略相关推荐

  1. .NET仓储模式高级用例

    \ 主要结论 \\ 如果需要执行基本CURD之外的其他操作,此时就有必要使用仓储(Repository).\\t 为了促进测试工作并改善可靠性,应将仓储视作可重复使用的库(Library).\\t 将 ...

  2. Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)

    很久没有写博客了,一些读者也经常问问一些问题,不过最近我确实也很忙,除了处理日常工作外,平常主要的时间也花在了继续研究微软的实体框架(EntityFramework)方面了.这个实体框架加入了很多特性 ...

  3. Entity Framework 实体框架的形成之旅--实体数据模型 (EDM)的处理(4)

    在前面几篇关于Entity Framework 实体框架的介绍里面,已经逐步对整个框架进行了一步步的演化,以期达到统一.高效.可重用性等目的,本文继续探讨基于泛型的仓储模式实体框架方面的改进优化,使我 ...

  4. EF实体框架数据操作基类(转)

    //---------------------------------------------------------------- // Copyright (C) 2013 河南禄恒软件科技有限公 ...

  5. Entity Framework 实体框架的形成之旅--利用Unity对象依赖注入优化实体框架(2)

    在本系列的第一篇随笔<Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)>中介绍了Entity Framework 实体框架的一些基础知识,以及构建 ...

  6. C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名...

    转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就 ...

  7. [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的连接恢复和命令拦截...

    这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第四篇:MVC程序中实体框架的连接恢复和 ...

  8. 实体框架高级应用之动态过滤 EntityFramework DynamicFilters

    实体框架高级应用之动态过滤 EntityFramework DynamicFilters 实体框架高级应用之动态过滤 EntityFramework DynamicFilters 我们开门见山,直奔主 ...

  9. Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成

    前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 ORM 的功能.由于在 09 年最初设计时,ORM 部分的设计并不是最重要 ...

最新文章

  1. 超融合架构下的数据中心
  2. CTFshow 命令执行 web61
  3. java队列转集合_Java集合 使用Queue
  4. 生成有控制台的WIN32程序
  5. (一)操作系统概论复习要点笔记
  6. boost::search_n相关的测试程序
  7. CentOS 7设置KVM硬盘模式为SCSI
  8. java servlet接口开发_servlet三种实现方式之一实现servlet接口
  9. [转帖]解密微软中间语言MSIL之调试程序(1)
  10. win11中gpedit.msc找不到文件怎么办 windows11gepdit.msc找不到文件的解决方法
  11. Windows环境下log4cxx的编译及使用(转载)
  12. php意外进程退出,php FastCGI 进程意外退出 错误解决方法
  13. Silverlight 实现文件下载
  14. 数据中心机房搬迁实施方案流程
  15. Unity脚本:寻找血量最低的敌人
  16. Android 监听短信数据库过滤获取短信内容上传至服务器
  17. 对Android开发者有益的40条优化建议
  18. Kali与编程:Winserver2019上搭建wds网络部署服务器
  19. 去哪儿攻略app v3.9.2 官方iphone版
  20. 界面专访丁珂:多数企业安全体系落后,上云是最快速解法

热门文章

  1. 机器人(机械臂)动力学建模方法(Newton-Euler equation)
  2. 操作系统储存管理功能
  3. python-virtualenv虚拟环境的使用
  4. Vue 组件间的通讯
  5. 地图检索 – 与众不同
  6. 吴恩达机器学习笔记_第三周
  7. Hadoop SequnceFile.Writer 压缩模式及压缩库浅析
  8. Java中空值处理的感受
  9. Linux操作系统下DHCP服务器配置方法介绍
  10. Window.Open() 和 window.showModalDialog()参数