一个SqlSugar实际案例

SqlGugar是一个非常好的数据库操作框架,今天用一个示例来分享如何使用。

新建一张课程表

结构如下:

CREATE TABLE `t_course` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `title` varchar(1024) NOT NULL COMMENT '课程标题',
  `description` text NOT NULL COMMENT '课程描述',
  `user_id` int NOT NULL COMMENT '创建者ID',
  `is_published` int NOT NULL COMMENT '是否发布',
  `created_at` datetime NOT NULL COMMENT '创建时间',
  `updated_at` datetime NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='课程'

对应的c#类如下
 

[SugarTable("t_course", "课程")]
public class Course : BaseModel
{
    [SugarColumn(
        ColumnName = "title",
        ColumnDescription = "课程标题",
        Length = 1024
    )]
    [JsonProperty(PropertyName = "title")]
    public string Title { get; set; } = "";

    [SugarColumn(
        ColumnName = "description",
        ColumnDescription = "课程描述",
        ColumnDataType = "text"
    )]
    [JsonProperty(PropertyName = "description")]
    public string Description { get; set; } = "";

    [SugarColumn(
      ColumnName = "user_id",
      ColumnDescription = "创建者ID"
    )]
    [JsonProperty(PropertyName = "user_id")]
    public int UserId { get; set; }

    [SugarColumn(
        ColumnName = "is_published",
        ColumnDescription = "是否发布"
    )]
    [JsonProperty(PropertyName = "is_published")]
    public int IsPublished { get; set; }
}

新建一个DBHelper类来管理数据库

    public class DBHelper
    {
        //多库情况下使用说明:
        //如果是固定多库可以传 new SqlSugarScope(List,db=>{}) 文档:多租户
        //如果是不固定多库 可以看文档Saas分库
        //https://www.donet5.com/Home/Doc?typeId=1181

        //用单例模式
        public static SqlSugarScope DB = new SqlSugarScope(
            new ConnectionConfig()
            {
                DbType = DbType.MySql,//数据库类型
                //ConnectionString = "server=127.0.0.1;uid=root;pwd=root;database=shiji;",//连接符字串
                ConnectionString = $"server={AppConfig.Get("db_host")};uid={AppConfig.Get("db_user")};pwd={AppConfig.Get("db_password")};database={AppConfig.Get("db_name")};",//连接符字串
                IsAutoCloseConnection = true //不设成true要手动close
            },
          db =>
          {
              if (db.Ado.IsValidConnection())
              {
                  //LogUtils.Log("数据库连接成功!");
              }
              else
              {
                  LogUtils.Log("数据库连接失败!");
              }
              db.Ado.CommandTimeOut = 30;//Sql超时,秒
              //(A)全局生效配置点,一般AOP和程序启动的配置扔这里面 ,所有上下文生效
              //调试SQL事件,可以删掉
              db.Aop.OnLogExecuting = (sql, pars) =>
                  {
                      //Console.WriteLine(sql);//输出sql,查看执行sql 性能无影响

                      //获取原生SQL推荐 5.1.4.63  性能OK
#if DEBUG
                      //Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));
#endif
                      //获取无参数化SQL 对性能有影响,特别大的SQL参数多的,调试使用
                      //UtilMethods.GetSqlString(DbType.SqlServer,sql,pars)

                  };

              //多个配置就写下面
              //db.Ado.IsDisableMasterSlaveSeparation=true;

              //注意多租户 有几个设置几个
              //db.GetConnection(i).Aop
          });
    }

自动创建表

 DB.CodeFirst.InitTables();

然后就可以进行愉快的操作啦

你可能感兴趣的:(前端,linux,c#)