网上有很多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. Linux 添加yum命令

    第一步,国内的yum仓库 http://mirrors.163.com/centos/7/os/x86_64/Packages/ http://mirrors.aliyun.com/centos/7/ ...

  2. AIX 6.1记录

    安装Oracle需要开启远程桌面进行访问 1. X Windows需要如下软件包才能正常运行 lslpp -l X11.apps.rte X11.apps.xterm X11.base.rte X11 ...

  3. 【javascript】javascript设计模式之单例模式

    单例模式: 定义:单例模式之所以这么叫,是因为它限制一个类只能有一个实例化对象. 实现方法:判断实例是否存在,如果存在则直接返回,如果不存在就创建了再返回.(确保一个类只有一个实例对象) 特点: 命名 ...

  4. Lambda多表联合

    var query = database.Posts // your starting point - table in the "from" statement .Join(da ...

  5. Taro 是一套遵

    https://github.com/NervJS/taro 使用 Taro,我们可以只书写一套代码,再通过 Taro 的编译工具,将源代码分别编译出可以在不同端(微信小程序.H5.React-Nat ...

  6. 关于Java Microbenchmark的一点记录

    大家知道单元测试对代码质量的保障作用已经没什么可说的了.Microbenchmark(微基准测试)也是保证代码质量的重要手段,也是容易忽略的,它用来衡量一些小的代码片段的性能指标,完善的Microbe ...

  7. Python学习---重点模块的学习【all】

    time     [时间模块] import time # print(help(time)) # time模块的帮助 print(time.time()) # 时间戳 print(time.cloc ...

  8. 5 hbase-shell + hbase的java api

    本博文的主要内容有 .HBase的单机模式(1节点)安装 .HBase的单机模式(1节点)的启动 .HBase的伪分布模式(1节点)安装  .HBase的伪分布模式(1节点)的启动    .HBase ...

  9. 【深入理解JAVA虚拟机】读后感

    收获颇多的一本书,非常值得细细品味. 1.所谓万变不离其宗,此书便是宗.读过此书后,发现以前看过的网上好多五花八门的文章,都是源自此书. 2.举一反三.此书中讲到的jvm用到的各种思想,在工作中其实经 ...

  10. Spring的IoC与AOP的理解

    1.Spring它到底是什么? Spring是一个开源的Java应用程序开发框架,为了解决企业应用开发的复杂性而创建的.   在spring中,它会认为一切Java类都是资源,而资源就是Bean,容纳 ...