十年河东,十年河西,莫欺少年穷

学无止境,精益求精

开发过.NetCore 的都知道,微软的EF框架EFCore对DataTable并不是特别友好,在整个EFCore框架中,直接写SQL语句似乎不太行,因此,在我们的项目中就有必要对数据库操作进行扩展。

自上篇博客 netCore 引用第三方ORM中间件-Dapper 后,我在项目架构时将Dapper引入到数据库操作层,使用后,我发现Dapper对 IQueryable 的支持几乎没有,【也可能有,但是我没发现】,这对于追求性能的开发人员来说难以接受,因此,今天引入sqlSugar。

Dapper的查询方法:

SqlSugar+SqlServer+NetCore3.1 入门案例

由上图可知,Dapper 支持IEnumerable ,IEnumerable 和 IQueryable 的区别是前者将数据全部加载到内存,后者是将需要的数据加载到内存。因此,IE比较浪费内存,IQ相对而言是按需开辟内存,因此,我选择IQ,虽说IQ在某些性能方面比不上IE,但现在的系统,大多都是数据量庞大的。

现在进入正题,sqlSugar的搭建。

俗话说:工欲善其事必先利其器,因此,在项目搭建之前,我们需要准备一个小的数据库。

SqlSugar+SqlServer+NetCore3.1 入门案例

简单的数据库,只有两张表,

1、打开VS,新建一个netCore3.1的控制台程序,并新增两个类库,如下:

SqlSugar+SqlServer+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

这里,将代码生成工具截图如下:

SqlSugar+SqlServer+NetCore3.1 入门案例

 工具仅能生成实体类,并不能生成上下文层

重要的话,再说一遍,不管是那一层,我们都可以通过手动写代码的形式实现

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;}

    }
}
View Code

相关文章:

  • 2021-08-03
  • 2022-12-23
  • 2021-12-02
  • 2021-11-23
  • 2022-01-07
  • 2021-08-03
  • 2021-05-29
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-08
  • 2021-07-17
  • 2021-12-14
  • 2021-08-24
相关资源
相似解决方案