c#使用emit方法DB,实体相互转换
网上有很多ORM框架和数据库转换方法。
c#由EF控制,但是大家知道的是影响效率和底层控制。
因此最近几个月一直在研究。最后产出了Hikari数据库连接池。
但是该库只是定位在连接池,无法有效进行后续操作,经过自己经验积累和网上关于反射性能的东西,最后决定为大家提供扩展库,也就是Hikari的扩展库。
但是扩展库与数据库连接池没有直接关系,所以很后面由分别提供了DataTableToList,ListToDataTable.都是采用的emit.哎,经历一段时间后感觉没有必要分成2个库,因为本身就不大。
遗憾的是 .net standard版本没有提供完整的emit.所以emit只能分别提供.NET Core,NET Framework.根据发布想象,下一版本.NET Standard将提供,后面将会修改。
说了这么多,其实就是把前面几篇博文用一个.net core库整合提供,但是没有提供NET Framework的。如果你需要使用emit方式的NET Framework版本,你只需要建立一个NET Framework库,然后把源码直接复制进去即可,我已经测试好了,只是不提供了,没有必要。
当然该版本完善了一下代码,增加了(修复)对实体的可空类型的支持。
需要说明的是,以前我被骗了,没有怎么研究过,只是会使用可空类型,但是为了实现转换,支持可空类型,在研究emit是才知道,给可空类型赋值实际是有一个转换的。例如:
int? a=4;
该语句实际是Nullable<int> a=new Nullable<int>();所以是有一个初始化的过程和分配过程,也许比类要好点。
但是在执行emit时发现还是会影响性能速度,虽然很小,几乎不会知道。因此在与数据库转换时,尤其是你需要高速转换时,不要使用可空类型。
项目地址:
https://github.com/jinyuttt/EntityMappingDBEmit.git
已经提交nuget,名称:EntityMappingDBEmitCore
最新文章
- Linux下Redis的安装与配置
- java实现栈与队列
- DIV实现纵向滚动条overflow-y
- UI学习笔记---第十天UITableView表视图编辑
- Java7编程 高级进阶学习笔记--嵌套类
- Server-U_详细配置
- Topcoder	SRM 630 (500 floyed 暴力 _builtin_popcount())
- static在类中的定义,和enum的用法
- Evernote Clearly :: Firefox 附加组件
- 如何在eclipse dump Java内存占用情况和打印GC LOG
- HDU-5289<;two pointers>;
- 关于在官网上下载Eclipse遇到的问题!!
- js执行函数报错Cannot set property &#39;value&#39; of null怎么解决?
- lua 立即执行函数
- SHA1算法原理【转】
- uva11426 欧拉函数应用,kuangbin的筛法模板
- devexpress 之 ChartControl
- go语言学习--protobuf的学习
- VC++编程之道读书笔记
- HTML-JavaScript的DOM操作-非重点部分
热门文章
- How To Manage StartUp Applications In Ubuntu
- Angular js部分关键字的理解
- Appium元素定位(uiautomatorviewer)
- linux 无法安装gcc, 可以试试换用 阿里的yum
- 在VisualStudio中远程调试IIS站点
- laravel controller重写
- JS数据模板分离(告别字符串拼接)-template
- redis缓存机制【转载】
- 本机未装Oracle数据库时Navicat for Oracle 报错:Cannot create oci environment 原因分析及解决方案
- CentOS7.X安装Redis-4.0.8以及Redis集群搭建