前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【BlogBook书】5、Sqlsugar:数据库ORM

【BlogBook书】5、Sqlsugar:数据库ORM

作者头像
老张的哲学
发布2024-01-15 17:36:51
2040
发布2024-01-15 17:36:51
举报
文章被收录于专栏:NetCore 从壹开始NetCore 从壹开始

框架高度集成国产优秀ORM——Sqlsugar,支持常规企业级所有的数据库操作场景:

1、全部兼容国产数据库;2、支持同时连接操作多种数据库,且相互之间不受影响;3、支持事务;4、支持主从分离模式;5、支持主备模式(主库挂了,会自动切换到备用库);6、详细的Sql操作日志;

一、相关的依赖注入配置

代码语言:javascript
复制
builder.Services.AddSqlsugarSetup();

相关参数设置

代码语言:javascript
复制
//MainDb:标识当前项目的主库,所对应的连接字符串的Enabled必须为true
//Log:标识日志库,所对应的连接字符串的Enabled必须为true,且Log关键字不能修改
//从库只需配置Slaves数组,要求数据库类型一致!,比如都是SqlServer

//主备模式,又称故障转移方案://如果主库挂了,会自动切换到备用连接,格式如下://备用连接的ConnId配置为主库的ConnId+数字即可,比如主库的ConnId为Main,那么备用连接的ConnId为Mian1
//主库、备用库无需数据库类型一致!
//备用库不会有程序维护,需要手动维护!"MainDB": "Main", //当前项目的主库,所对应的连接字符串的Enabled必须为true
"DBS": [
  /*
    对应下边的 DBType
    MySql = 0,
    SqlServer = 1,
    Sqlite = 2,
    Oracle = 3,
    PostgreSQL = 4,
    Dm = 5,//达梦
    Kdbndp = 6,//人大金仓
  */
  {
    "ConnId": "Main",
    "DBType": 2,
    "Enabled": true,
    "Connection": "WMBlog.db", //sqlite只写数据库名就行
    "Slaves": [
      {
        "HitRate": 0,// 值越大,优先级越高 0不使用
        "Connection": "WMBlog2.db"
      }
    ]
  },
  {
    "ConnId": "Main2",
    "DBType": 2,
    "Enabled": true,
    "Connection": "WMBlog3.db", //sqlite只写数据库名就行
    "Slaves": [
      {
        "HitRate": 0,// 值越大,优先级越高 0不使用
        "Connection": "WMBlog4.db"
      }
    ]
  },
  {
    "ConnId": "Log", //日志库连接固定名称,不要改,其他的可以改
    "DBType": 2,
    "Enabled": true,
    "HitRate": 50,
    "Connection": "WMBlogLog.db" //sqlite只写数据库名就行
  },
  {
    "ConnId": "WMBLOG_MSSQL_1",
    "DBType": 1,
    "Enabled": false,
    "Connection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=WMBLOG_MSSQL_1;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
    "ProviderName": "System.Data.SqlClient"
  },
  {//SqlServer连接配置例子
    "ConnId": "WMBLOG_MSSQL_2",
    "DBType": 1,
    "Enabled": false,
    "Connection": "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=WMBLOG_MSSQL_2;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False",
    "ProviderName": "System.Data.SqlClient"
  },
  {//Mysql连接配置例子
    "ConnId": "WMBLOG_MYSQL",
    "DBType": 0,
    "Enabled": false,
    "Connection": "server=localhost;Database=blog;Uid=root;Pwd=root;Port=3306;Allow User Variables=True;"
  },
  {//Oracle连接配置例子
    "ConnId": "WMBLOG_ORACLE",
    "DBType": 3,
    "Enabled": false,
    "Connection": "Data Source=127.0.0.1/ops;User ID=OPS;Password=123456;Persist Security Info=True;Connection Timeout=60;"
  },
  {//达梦连接配置例子
    "ConnId": "WMBLOG_DM",
    "DBType": 5,
    "Enabled": false,
    "Connection": "Server=xxxxx:5236;User Id=xxxxx;PWD=xxxxx;SCHEMA=TESTDBA;"
  },
  {//金仓连接配置例子
    "ConnId": "WMBLOG_KDBNDP",
    "DBType": 6,
    "Enabled": false,
    "Connection": "Server=127.0.0.1;Port=54321;UID=SYSTEM;PWD=system;database=SQLSUGAR4XTEST1;"
  }
],

二、使用方式

1、在model层创建一个实体类

代码语言:javascript
复制
/// <summary>
 /// 用户访问趋势日志
 /// </summary>
 public class AccessTrendLog : RootEntityTkey<long>
 {
     /// <summary>
     /// 用户
     /// </summary>
     [SugarColumn(Length = 128, IsNullable = true)]
     public string UserInfo { get; set; }

     /// <summary>
     /// 次数
     /// </summary>
     public int Count { get; set; }

     /// <summary>
     /// 更新时间
     /// </summary>
     public DateTime UpdateTime { get; set; } = DateTime.Now;
 }

2、系统封装了仓储层,并用泛型仓储基类来实现自动服务注入,所以这里不用任何操作

具体请看Blog.Core.Repository层下的BaseRepository.cs

3、是Service层写具体的业务逻辑,并抽离接口到IService层

服务层也封装了服务基类,不用做其他操作,直接写逻辑即可

代码语言:javascript
复制
public partial class AccessTrendLogServices : BaseServices<AccessTrendLog>, IAccessTrendLogServices
 {

 }

4、最后在Controller层写接口,把服务注入即可,类似这样

代码语言:javascript
复制
readonly IModuleServices _moduleServices;
 readonly IUser _user;


 public ModuleController(IModuleServices moduleServices, IUser user)
 {
     _moduleServices = moduleServices;
     _user = user;
 }
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NetCore 从壹开始 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档