接口数据处理模块是什么意思呢?实际上很简单,就是使用面向接口的思想和方式来做数据处理。
还提到EntityFramework和Dapper,EntityFramework和Dapper是.net环境下推崇最高的两种ORM工具。
1、EntityFramework是出自微软根正苗红的.net下的ORM工具,直接在Vs工具和Mvc框架中集成了,默认生成的项目就是使用EntityFramework的;微软也一直都在维护更新升级,最新版本都到EF7了。也迁移到了最新的.net Core平台了。
2、Dapper也是个厉害的角色。号称.net下"无敌",速度最快
但是他们两个开发方式完全不一样,个人认为EntityFramework是基于领域模型的,Dapper是基于sql的
注:我以前没用Dapper做过项目。之前一直讨厌Dapper,对赤裸裸的sql有很大成见,原因一程序员去直接写sql搞不好就会导致sql注入风险,原因二我认为程序员应该花精力琢磨逻辑如何写,而不是和DBA比写sql的功底
注:EntityFramework我也用的少,我主导的项目都是用我自己开发的ORM工具,维护别人的项目经常碰到EntityFramework生成复杂到不可理喻的sql,而且EntityFramework几乎不能在一个项目中分库分表读写分离操作(这个问题已经解决,后面会讲到)
现在要做的就是让ORM工具(含EntityFramework和Dapper)以面向接口的方式工作,"屏蔽"掉一些个性化的差异
一、面向接口数据处理模块
面向接口数据处理模块很简单,就是一堆数据处理的接口,像数据仓储接口。有了它们几乎所有数据仓储都不用再定义新接口了,主要的核心接口全部公布如下:
/// <summary> /// 实体泛型主键接口 /// </summary> /// <typeparam name="TPrimaryKey"></typeparam> public interface IEntity<TPrimaryKey> : IEntity { /// <summary> /// 主键 /// </summary> TPrimaryKey Id { get; set; } } /// <summary> /// 实体接口 /// </summary> public interface IEntity { /// <summary> /// 主键 /// </summary> object ObjId { get; } }