网上有很多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

c#使用emit方法DB,实体相互转换的更多相关文章

  1. EF里查看/修改实体的当前值、原始值和数据库值以及重写SaveChanges方法记录实体状态

    本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetValue<TValue>方法 拷贝DbPropertyValues到实体:ToObject ...

  2. EFCore扩展Select方法(根据实体定制查询语句)

    EFCore扩展Select方法(根据实体定制查询语句)  通常用操作数据库的时候查询返回的字段是跟 我们的定义的实体是不一致的,所以往往针对UI或者接口层创建大量的Model, 而且需要手动对应字段 ...

  3. vue 子组件 $emit方法 调用父组件方法

    $emit方法 父组件 <template> <div> <child @callFather="activeSon"></child&g ...

  4. .net core 2使用ef core 2.0以db first方法创建实体类

    先安装以下三个包: Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Microsoft.EntityFr ...

  5. 使用Emit实现给实体赋值

    Dapper.net的速度很快,最近看源码,原来他orm的实现是通过编写大量IL代码实现的. 使用DynamicMethod,自己编织一个给实体赋值的方法.这种写法效率很高,接近直接对属性赋值.比使用 ...

  6. 反射 DataTable拓展方法 转实体对象、实体集合、JSON

    Mapper类 using System; using System.Collections.Generic; using System.Data; using System.Globalizatio ...

  7. C# 扩展方法克隆实体类

    using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Ru ...

  8. 这两天自己模仿写的一个Asp.Net的显示分页方法 附加实体转换和存储过程

    之前自己一直用Aspnetpager控件来显示项目中的分页,但是每次都要拖一个aspnetpager的控件进去,感觉很不舒服,因为现在自己写的webform都不用服务器控件了,所以自己仿照aspnet ...

  9. 体温数据上传程序开发+获取时间的三种方法+DB Browser下载及安装

    今天开始了体温上传程序的开发 今日所学: 获取时间 (21条消息) (转)安卓获取时间的三种方法_sharpeha的博客-CSDN博客_安卓获取时间 DB Browser安装教程 (20条消息) sq ...

随机推荐

  1. js组件开发-移动端地区选择控件mobile-select-area

    移动端地区选择控件mobile-select-area 由于之前的[js开源组件开发]js手机联动选择地区仿ios 开源git 很受欢迎,于是我又对其进行了一些优化,包括可选的范围变大了,添加了默认空 ...

  2. Vue2实践揭秘 - 书,读后作了一个简单摘要

    jd上买了本实践相关的, 看过后,的确是实践项目后的一些分享,有些网上的一些vue2教程没怎么提及 ----------- 看完了,有些启发,作了个简单摘要作记录, 对vue2感兴趣的,可以自己网上搜 ...

  3. 获取表SQLSERVER 的表结构信息(字段名,长度,精度,类型,NULL,ID,PRI)

    select sys.columns.name, sys.types.name, sys.columns.precision,sys.columns.scale, sys.columns.is_nul ...

  4. matplotlib点线 坐标刻度 3D图绘制(六)

    plot语句中支持除X,Y以外的参数,以字符串形式存在,来控制颜色.线型.点型等要素,语法形式为: plt.plot(X, Y, 'format', ...) 1 点和线的样式 颜色 参数color或 ...

  5. 巧用花生壳将局域网内的FTP和www服务器发布到互联网

    一.目的:用生壳发布FTP和mail服务器到互连网. 二.网络环境:(出租房多家共用路由器上网,ADSL的1Mbps带宽,动态PPPOE拨号,帐号和密码存储在soho路由器中,路由器自动联机上网,并为 ...

  6. 用适配器模式处理复杂的UITableView中cell的业务逻辑

    用适配器模式处理复杂的UITableView中cell的业务逻辑 适配器是用来隔离数据源对cell布局影响而使用的,cell只接受适配器的数据,而不会与外部数据源进行交互. 源码: ModelCell ...

  7. OSG3.0.1的编译

    在OSG-中国有很多关于OSG的资料,包括OSG的编译和教程. 要编译OSG首先需要准备的包: 1,OSG3.0.1源代码: 2,CMAKE: 3,OSG用到的第三方库: 4,OSG Data:OSG ...

  8. C# Razor 小笔记和某些细节

    知识小结:C# 的主要 Razor 语法规则 单独一个变量直接使用 @a 的形式,无需加分号,一般是直接使用已有变量,注意在使用 html 标签时,要和 razor 表达式加一个空格. //不能有空格 ...

  9. 沉淀再出发:java中的CAS和ABA问题整理

    沉淀再出发:java中的CAS和ABA问题整理 一.前言 在多并发程序设计之中,我们不得不面对并发.互斥.竞争.死锁.资源抢占等等问题,归根到底就是读写的问题,有了读写才有了增删改查,才有了所有的一切 ...

  10. Linux常用基本命令大全

    1 一般情况下,自己安装linux系统都会选择简易版,这里面少很多命令,所以需要安装其他的包        yum install openssh-clients   安装scp的软件包 2 把当前一 ...