- 本文所述开发环境:.C#、NET8、Visual Studio2022
1. 在项目中安装SqlSugar
- 在Visual Studio2022中新建一个 C# 的控制台应用程序,框架选择 .Net8 。新建后如下图所示:
- 然后打开NuGet 程序包管理器
- 搜索 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(){
}
=======其它字段没有变化,此处省略========
}
}
以上就是实际使用过程中用到的一些创建实体类的方法。