C# EF查询结果转换成子类 SelectToType

本人很懒, 总是不愿意写太多的代码.
系统做久了,就会发现,对象继承有很大的好处, 省去了很多事情,
我写代码的习惯是用代码生成器生成.数据库模型类,
其它业务模型,继承自它…
当然其它业务模型多出来的字段一般都不需要保存到数据库. 也就写到了新类里面..

这样的好处就是, 数据库增加字段,代码生成器生成一下就好了. ( 归根结底还是懒啊. )
但是这样做,却有一个美中不足之处.
EF提供的功能想要把查询结果转换成另外一个Class的, 通常需要这么写.

     var d = db.WReports.Select(a=>new WSW(){
                 Id=a.Id,
                 Name = a.Name,
                 ...
                 ...
             }).Take(10).ToList();

这么写, 属性多了,不胜其烦, ( 归根结底还是懒啊. )
每次增加字段还要去查一遍, 经常会漏,漏了还不容易发现问题….
不写子类WSW 的话, 代码又不好理解….容易搞混,毕竟两个对象模型不一样.
一锅粥似的万能类, 我不喜欢. 每次增加字段还要去复制黏贴一遍. 很累. 还容易忘.
所以最好的方法, 是下面这样.

   var d = db.WReports.SelectToType<WReport, WSW>().Take(10).ToList();

当然这个 SelectToType 是我自己花了2天的时间写的扩展.
想要的话.找我吧. 5块钱一份, 物美价廉, 童叟无欺, 是软件开发, 居家旅行, 同事面前吹牛B,节省开发时间 之必备神器. 值得拥有..

这个类,可不是只能查询转换成子类, 只要是两个类之间的属性名称相同的就会自动取到数值了.
性能嘛… 杠杠的… 绝对不是用反射一个一个复制的…直接修改了到数据库查询的select 语句, 不信你可以自己跟踪一下sql语句. 性能几乎跟Select()一样.

同时再附送一个SelectToType 的前身, MapTo 函数 . 仅能用于 Linq to Object 场景. 作用也是转换成子类.
就是性能不如SelectToType 快.
示例如下.

var c = db.WReports.Take(10).ToList().MapTo<WReport,WSW>().ToList();

想要的,请直接付款, 留下邮箱地址. 受到款会把源代码发过去… 最近比较穷, 请谅解…
这里写图片描述

猜你喜欢

转载自blog.csdn.net/phker/article/details/80928353