SqlSugar使用DbFirst对象根据数据库表结构创建实体类-C#

  • 本文所述开发环境:.C#、NET8、Visual Studio2022

1. 在项目中安装SqlSugar

  • 在Visual Studio2022中新建一个 C# 的控制台应用程序,框架选择 .Net8。新建后如下图所示:
    新建.Net8框架的C#控制台程序
  • 然后打开NuGet程序包管理器
    点击NuGet程序包管理器
  • 搜索 SqlSugarCore 并安装
    搜索SqlSugarCore并安装
  • 安装后在解决方案窗口中,项目下的包目录下就可以看到安装的包了
    在这里插入图片描述

2. 在数据库中创建以下表,后面案例中将要用到

  • 学生表
学生ID 姓名 班级ID 状态ID 性别 年龄 身高 体重
101 赵同学 1001 1 25 170 65.3
102 宋同学 1002 1 24 165 55.3
103 李同学 1003 2 27 175 65.4
104 钱同学 1001 2 28 171.5 64.2
105 周同学 1002 3 29 169.8 66.7
106 王同学 1003 3 29 168.5 65.9
107 谢同学 1001 1 25 178.2 69.9
108 郭同学 1002 1 25 172.6 65.4
109 郑同学 1003 1 24 177.3 67.3
  • 班级表
班级ID 班级名称 班长 班主任
1001 奋进1001班 107 234
1002 奋进1002班 108 325
1003 奋进1003班 109 516
  • 状态表
状态ID 状态名称
1 本科在读
2 博士在读
3 硕士在读
  • 教师表
教师ID 姓名 性别 联系方式
234 任老师 14523789834
325 李老师 16423264527
516 武老师 15537380412
  • 选课表
学生ID 课程
101 语文,数学,生物,地理,化学
102 语文,数学,英语,物理,化学
103 语文,数学,电路原理,地理,化学
104 语文,数学,动画设计,C编程,化学
105 语文,数学,C编程,历史,话剧鉴赏
106 语文,数学,话剧鉴赏,动画设计,历史
107 语文,数学,C编程,地理,化学
108 语文,数学,电路原理,电路设计,历史
109 语文,数学,电路设计,地理,化学

3. 使用SqlSugar.DbFirst创建实体类

更多操作可以查看SqlSugar官网,这里只介绍一些实际项目中用到的方法

a. 创建表对应的实体类文件

新建SqlSugar连接配置对象,官网给出如下设置:

using SqlSugar;

var connectionConfig = new ConnectionConfig()
{
    ConnectionString = 你的ConnectionString  // 数据库连接字符串,
    DbType = SqlSugar.DbType.SqlServer, // 指定数据库类型
    IsAutoCloseConnection = true // 是否自动关闭连接
};

数据库连接字符串可以参照如下格式:
这里使用的数据库为本地SqlServer数据库,数据库名:FY2000,登录账户:sa,密码:123456

ConnectionString = “SERVER=127.0.0.1;DATABASE=FY2000;UID=sa;PWD=123456;MultipleActiveResultSets=true;trustServerCertificate=true;”

有了ConnectionConfig对象,就可以新建SqlSugarClient对象来根据数据库表结构创建对应的实体类文件到项目中。这样就不用手动新建实体类了,尤其在表字段很多的时候,可以减少工作量。

using (SqlSugarClient sugarClient = new(connectionConfig))
{
    sugarClient.DbFirst
        .Where("tb_student") // 要创建实体类文件的数据库表名
        .CreateClassFile(  // 创建实体类文件的方法
        "D:\\MyProTest\\CSharp\\SqlSugarConsole\\SugarModels", // 创建的实体类文件的存放路径
        "SugarModels"); //指定实体类所属的命名空间
}

编译运行控制台程序,结果如下:
生成实体类文件
可以看到,运行后自动在项目路径下创建了SugarModels文件夹,并创建了用表名命名的实体类文件tb_student.cs
tb_student.cs文件内容如下:

using System;
using System.Linq;
using System.Text;

namespace SugarModels
{
    ///<summary>
    ///
    ///</summary>
    public partial class tb_student
    {
           public tb_student(){


           }
           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           public int 学生ID {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           public string 姓名 {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           public int 班级ID {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           public int 状态ID {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:True
           /// </summary>           
           public string 性别 {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:True
           /// </summary>           
           public int? 年龄 {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:True
           /// </summary>           
           public double? 身高 {get;set;}

           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:True
           /// </summary>           
           public double? 体重 {get;set;}

    }
}

可以看到 命名空间名称为 SugarModels,类名为表名 tb_student

如果想要创建字段的属性标签,比如:主键属性,此时就要用方法:IsCreateAttribute(),代码如下:

    sugarClient.DbFirst
        .Where("tb_teacher") // 要创建实体类文件的数据库表名
        .IsCreateAttribute() // 生成SqlSugar特性
        .CreateClassFile(  // 创建实体类文件的方法
        "D:\\MyProTest\\CSharp\\SqlSugarConsole\\SugarModels", // 创建的实体类文件的存放路径
        "SugarModels"); //指定实体类所属的命名空间

运行后,类 tb_student中的学生ID字段加上了主键的属性( [SugarColumn(IsPrimaryKey=true)]),类名上面也加上了对应数据库表名的属性([SugarTable(“tb_student”)])。如下所示:

namespace SugarModels
{
    ///<summary>
    ///
    ///</summary>
    [SugarTable("tb_student")]
    public partial class tb_student
    {
           public tb_student(){


           }
           /// <summary>
           /// Desc:
           /// Default:
           /// Nullable:False
           /// </summary>           
           [SugarColumn(IsPrimaryKey=true)]
           public int 学生ID {get;set;}

		   =======其它字段没有变化,此处省略========           
    }
}

如果类中的string类型的字段存在为NULL的情况,那我们就应该声明为可以为NULL的类型string?,这时候就要使用方法:StringNullable()。,代码如下:

    sugarClient.DbFirst
        .Where("tb_student") // 要创建实体类文件的数据库表名
        .IsCreateAttribute() // 生成SqlSugar特性
        .StringNullable()  // 强制可空类型string加上?
        .CreateClassFile(  // 创建实体类文件的方法
        "D:\\MyProTest\\CSharp\\SqlSugarConsole\\SugarModels", // 创建的实体类文件的存放路径
        "SugarModels"); //指定实体类所属的命名空间

执行结果如下所示:字段 姓名性别 都有了相应的变化

[SugarTable("tb_student")]
public partial class tb_student
{
       public tb_student(){


       }
       /// <summary>
       /// Desc:
       /// Default:
       /// Nullable:False
       /// </summary>           
       public string 姓名 {get;set;} = null!;

       /// <summary>
       /// Desc:
       /// Default:
       /// Nullable:True
       /// </summary>           
       public string? 性别 {get;set;}
       =======其它字段没有变化,此处省略========  
}

有时候,表名可能太长或不够好,不是想要的类名,想要根据表结构创建自定义名字的实体类名,这时候就要用方法:FormatClassName()。代码如下:

    sugarClient.DbFirst
        .Where("tb_student") // 要创建实体类文件的数据库表名
        .IsCreateAttribute() // 生成SqlSugar特性
        .StringNullable()  // 强制可空类型string加上?
        .FormatClassName(it => "Student") // 指定创建的实体类文件名称和类名称
        .CreateClassFile(  // 创建实体类文件的方法
        "D:\\MyProTest\\CSharp\\SqlSugarConsole\\SugarModels", // 创建的实体类文件的存放路径
        "SugarModels"); //指定实体类所属的命名空间

执行结果如下:
生成指定名称的实体类名文件
生成的类名如下:

namespace SugarModels
{
    ///<summary>
    ///
    ///</summary>
    [SugarTable("tb_student")]
    public partial class Student
    {
           public Student(){


           }
	       =======其它字段没有变化,此处省略========  
	}
}

以上就是实际使用过程中用到的一些创建实体类的方法。


好了,分享到这里,感谢翻阅,希望帮到你。

相关推荐

  1. SqlSugar实体CURD应用-C#

    2024-06-13 13:18:04       31 阅读
  2. 数据结构:顺序C++实现

    2024-06-13 13:18:04       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-13 13:18:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 13:18:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 13:18:04       82 阅读
  4. Python语言-面向对象

    2024-06-13 13:18:04       91 阅读

热门阅读

  1. HTML下雪/烟花

    2024-06-13 13:18:04       27 阅读
  2. 关于windows脚本的一些东西

    2024-06-13 13:18:04       35 阅读
  3. Python有哪些经典的常用库?

    2024-06-13 13:18:04       34 阅读
  4. 聊聊JetCacheProxyConfiguration

    2024-06-13 13:18:04       29 阅读
  5. 测试面试点

    2024-06-13 13:18:04       37 阅读
  6. 【星海随笔】ELK优化

    2024-06-13 13:18:04       37 阅读
  7. [EFI]NUC11电脑 Hackintosh 黑苹果efi引导文件

    2024-06-13 13:18:04       74 阅读
  8. 13. FastLED 示例3则

    2024-06-13 13:18:04       69 阅读
  9. gitlab下载及安装

    2024-06-13 13:18:04       33 阅读