使用实体框架、Dapper和Chain的仓储模式实现策略
\
关键要点:
\
- 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的仓储模式实现策略相关推荐
- .NET仓储模式高级用例
\ 主要结论 \\ 如果需要执行基本CURD之外的其他操作,此时就有必要使用仓储(Repository).\\t 为了促进测试工作并改善可靠性,应将仓储视作可重复使用的库(Library).\\t 将 ...
- Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)
很久没有写博客了,一些读者也经常问问一些问题,不过最近我确实也很忙,除了处理日常工作外,平常主要的时间也花在了继续研究微软的实体框架(EntityFramework)方面了.这个实体框架加入了很多特性 ...
- Entity Framework 实体框架的形成之旅--实体数据模型 (EDM)的处理(4)
在前面几篇关于Entity Framework 实体框架的介绍里面,已经逐步对整个框架进行了一步步的演化,以期达到统一.高效.可重用性等目的,本文继续探讨基于泛型的仓储模式实体框架方面的改进优化,使我 ...
- EF实体框架数据操作基类(转)
//---------------------------------------------------------------- // Copyright (C) 2013 河南禄恒软件科技有限公 ...
- Entity Framework 实体框架的形成之旅--利用Unity对象依赖注入优化实体框架(2)
在本系列的第一篇随笔<Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)>中介绍了Entity Framework 实体框架的一些基础知识,以及构建 ...
- C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名...
转自:http://www.cnblogs.com/huangcong/archive/2011/07/20/1931107.html 在之前的文本模板(T4)初体验中我们已经知道了T4的用处,下面就 ...
- [渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:MVC程序中实体框架的连接恢复和命令拦截...
这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第四篇:MVC程序中实体框架的连接恢复和 ...
- 实体框架高级应用之动态过滤 EntityFramework DynamicFilters
实体框架高级应用之动态过滤 EntityFramework DynamicFilters 实体框架高级应用之动态过滤 EntityFramework DynamicFilters 我们开门见山,直奔主 ...
- Rafy 领域实体框架设计 - 重构 ORM 中的 Sql 生成
前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 ORM 的功能.由于在 09 年最初设计时,ORM 部分的设计并不是最重要 ...
最新文章
- 超融合架构下的数据中心
- CTFshow 命令执行 web61
- java队列转集合_Java集合 使用Queue
- 生成有控制台的WIN32程序
- (一)操作系统概论复习要点笔记
- boost::search_n相关的测试程序
- CentOS 7设置KVM硬盘模式为SCSI
- java servlet接口开发_servlet三种实现方式之一实现servlet接口
- [转帖]解密微软中间语言MSIL之调试程序(1)
- win11中gpedit.msc找不到文件怎么办 windows11gepdit.msc找不到文件的解决方法
- Windows环境下log4cxx的编译及使用(转载)
- php意外进程退出,php FastCGI 进程意外退出 错误解决方法
- Silverlight 实现文件下载
- 数据中心机房搬迁实施方案流程
- Unity脚本:寻找血量最低的敌人
- Android 监听短信数据库过滤获取短信内容上传至服务器
- 对Android开发者有益的40条优化建议
- Kali与编程:Winserver2019上搭建wds网络部署服务器
- 去哪儿攻略app v3.9.2 官方iphone版
- 界面专访丁珂:多数企业安全体系落后,上云是最快速解法