十年河东,十年河西,莫欺少年穷
学无止境,精益求精
开发过.NetCore 的都知道,微软的EF框架EFCore对DataTable并不是特别友好,在整个EFCore框架中,直接写SQL语句似乎不太行,因此,在我们的项目中就有必要对数据库操作进行扩展。
自上篇博客 netCore 引用第三方ORM中间件-Dapper 后,我在项目架构时将Dapper引入到数据库操作层,使用后,我发现Dapper对 IQueryable 的支持几乎没有,【也可能有,但是我没发现】,这对于追求性能的开发人员来说难以接受,因此,今天引入sqlSugar。
Dapper的查询方法:
由上图可知,Dapper 支持IEnumerable ,IEnumerable 和 IQueryable 的区别是前者将数据全部加载到内存,后者是将需要的数据加载到内存。因此,IE比较浪费内存,IQ相对而言是按需开辟内存,因此,我选择IQ,虽说IQ在某些性能方面比不上IE,但现在的系统,大多都是数据量庞大的。
现在进入正题,sqlSugar的搭建。
俗话说:工欲善其事必先利其器,因此,在项目搭建之前,我们需要准备一个小的数据库。
简单的数据库,只有两张表,
1、打开VS,新建一个netCore3.1的控制台程序,并新增两个类库,如下:
2、SugarEntity为实体层,实体层代码有项目或工具生成,当然,也可以手写。注:需要引入:SqlASugar V 5.0.0.19 版本。
SugarContext为数据上下文层,用于操作数据库,代码也可以通过项目或工具生成,当然,也可以手写。注:需要引入:SqlASugar V 5.0.0.19 版本 和 Newtonsoft.Json V 12.0.3 及 System.Data.SqlClient V 4.8.2 版本
SugarCore为控制台输出层,需要引入SqlASugar V 5.0.0.19 版本
关于上述的【可通过项目/工具生成】大家可参考:http://www.codeisbug.com/Doc/8/1123 或者 直接去CSDN 上下载相关工具/项目:https://download.csdn.net/download/wolongbb/12997789
这里,将代码生成工具截图如下:
工具仅能生成实体类,并不能生成上下文层
重要的话,再说一遍,不管是那一层,我们都可以通过手动写代码的形式实现
3、更层次代码:
3.1、实体层Entity代码如下
Student 实体层
using System; using System.Linq; using System.Text; using SqlSugar; namespace Sugar.Enties { ///<summary> /// ///</summary> [SugarTable("Student")] public partial class Student { public Student(){ } /// <summary> /// Desc: /// Default: /// Nullable:False /// </summary> [SugarColumn(IsPrimaryKey=true)] public string StudentID {get;set;} /// <summary> /// Desc: /// Default: /// Nullable:True /// </summary> public string GradID {get;set;} /// <summary> /// Desc: /// Default: /// Nullable:True /// </summary> public string StudentName {get;set;} /// <summary> /// Desc: /// Default: /// Nullable:True /// </summary> public string StudentSex {get;set;} /// <summary> /// Desc: /// Default: /// Nullable:True /// </summary> public DateTime? CreateTime {get;set;} } }