使用SqlSugar作为ORM框架。

SqlSugar .Net ORM 5.X 官网 、文档、教程 - SqlSugar 5x - .NET果糖网 (donet5.com)

导入Nuget包

在服务器的SimpleServer解决方案中添加新的类库,命名为“MySql”。在此类库项目中进行SqlSugar的初始化和存放数据库对应的类。

在MySql项目中添加文件夹,命名为MySQLData,并且将自动生成的Class1文件从解决方案资源管理器中命名为MySqlMgr

点击“工具——Nuget包管理器——管理解决方案的Nuget程序包”,在打开的界面中搜索“SqlSugarCore”,点击后安装在MySql类库项目中。

最后再在解决方案资源管理器中选中“MySql——依赖项——右键”,在弹出的窗口中选择“ServerBase”并确定。

新建数据库

MySQL摘要

我们依然使用wampServer和Navicat建数据库,具体过程参见连接。

我们不需要新连接,只需要在之前的localhost_3306里新建一个sulsugartest数据库,使用utf8字符集,使用utf8-general排序规则。

在sulsugartest数据库里新建一个表,并设计:

列名 类型 长度 小数点 不是null 主键 其他
Id int 11 0 自动递增、无符号、无重复
Username varchar 255 0 无重复
Password varchar 255 0
Logindate datetime 0 0
Logintype varchar 255 0
Token varchar 255 0

数据库中尽量不要出现null,否则很可能会产生性能问题。

设置Username和Id无重复,需要添加索引

栏位 索引类型 索引方法
Id Id Unique BTree
Username Username Unique BTree

最后点击保存,命名为user。

初始化SqlSugar

修改MySqlMgr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using SqlSugar;

namespace MySql
{
public class MySqlMgr : SingletonPattern<MySqlMgr>
{
#if DEBUG
private const string connectionStr = "server=localhost;Database=sqlsugartest;Uid=root;Pwd=;";
#else
private const string connectionStr = "";
#endif
public SqlSugarClient? SqlSugarDB = null;

public void Init()
{
SqlSugarDB = new SqlSugarClient(
new ConnectionConfig()//设置配置
{
ConnectionString = connectionStr,
DbType = DbType.MySql,
IsAutoCloseConnection = true,//自动释放数据库连接
}
#if DEBUG
,db =>//监听Debug
{
db.Aop.OnLogExecuting = (sql, pars) =>
{
Console.WriteLine(sql);
UtilMethods.GetNativeSql(sql, pars);
UtilMethods.GetSqlString(DbType.MySql,sql, pars);
};
}
#endif
);
}
}
}

修改Program

1
2
3
4
5
6
static void Main(string[] args)
{
MySqlMgr.Instance.Init();//+++
ServerSocket.Instance.Init();
Console.ReadLine();
}

User实体类

实体类是用来映射数据库内的表的类。注意不要和协议类(继承了MsgBase的类)搞混了,后者是用来传输数据的类。

配置实体 - SqlSugar

注意,User实体类里使用的特性是在数据库内已经存在“user”表的前提下。还有一些特性是用在生成表上的。见下面:

Code First 代码优先,数据迁移 - SqlSugar

在MySQLData文件夹内新建User

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using SqlSugar;

namespace MySql.MySQLData
{
[SugarTable("user")]//数据库对应表名,如果相同此特性可以省略
public class User
{
[SugarColumn(IsPrimaryKey = true,IsIdentity = true)]//IsPrimaryKey主键,IsIdentity自增
public int Id { get; set; }
public string? Username { get; set; } = null;
public string? Password { get; set; } = null;
public DateTime? Logindate { get; set; } = null;
public string? Logintype { get; set; } = null;
public string? Token { get; set; } = null;
}
}