赞
踩
使用SqlSugar进行多数据库操作主要涉及以下几个步骤:
首先,你需要在项目的配置文件中(如appsettings.json
、web.config
或app.config
)配置多个数据库的连接字符串。每个连接字符串都对应一个不同的数据库。
例如,在appsettings.json
中,你可以这样配置:
json复制代码
{ | |
"ConnectionStrings": { | |
"DefaultConnectionSqlServer": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;", | |
"DefaultConnectionMySql": "server=localhost;user=root;password=myPassword;database=myOtherDataBase;", | |
// 可以继续添加更多数据库的连接字符串 | |
} | |
} |
对于每个需要操作的数据库,你都需要创建一个SqlSugarClient
的实例,并在创建时传入相应的数据库连接配置。
csharp复制代码
using SqlSugar; | |
// 创建SqlServer数据库的SqlSugarClient实例 | |
var dbClientSqlServer = new SqlSugarClient(new ConnectionConfig() | |
{ | |
ConnectionString = Configuration.GetConnectionString("DefaultConnectionSqlServer"), // 从配置文件获取连接字符串 | |
DbType = DbType.SqlServer, | |
IsAutoCloseConnection = true, | |
// 其他配置... | |
}); | |
// 创建MySql数据库的SqlSugarClient实例 | |
var dbClientMySql = new SqlSugarClient(new ConnectionConfig() | |
{ | |
ConnectionString = Configuration.GetConnectionString("DefaultConnectionMySql"), // 从配置文件获取连接字符串 | |
DbType = DbType.MySql, | |
IsAutoCloseConnection = true, | |
// 其他配置... | |
}); |
现在,你可以使用这些SqlSugarClient
实例来执行数据库操作了。根据你的业务需求,选择对应的实例来操作相应的数据库。
csharp复制代码
// 使用SqlServer数据库实例插入数据 | |
var user = new User { Name = "张三", Age = 20 }; | |
var id = dbClientSqlServer.Insertable(user).ExecuteReturnIdentity(); | |
// 使用MySql数据库实例查询数据 | |
var userList = dbClientMySql.Queryable<User>().ToList(); |
System.Transactions
命名空间中的类来管理分布式事务。然而,请注意分布式事务的性能和复杂性。使用SqlSugar进行多数据库操作主要涉及配置多个数据库连接、创建多个SqlSugarClient
实例,并根据业务需求选择相应的实例来执行数据库操作。需要注意的是,跨库查询和分布式事务处理可能需要额外的考虑和配置。此外,还应注意每个数据库的性能和负载情况,以确保系统的稳定性和性能。
附SqlSugar应用代码:
using SqlSugar;
//创建数据库对象 (用法和EF Dappper一样通过new保证线程安全)
SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "datasource=demo.db",
DbType = DbType.Sqlite,
IsAutoCloseConnection = true
},
db => {
db.Aop.OnLogExecuting = (sql, pars) =>
{
//获取原生SQL推荐 5.1.4.63 性能OK
Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));
//获取无参数化SQL 对性能有影响,特别大的SQL参数多的,调试使用
//Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))
};
//注意多租户 有几个设置几个
//db.GetConnection(i).Aop
});
//建库
Db.DbMaintenance.CreateDatabase();//达梦和Oracle不支持建库
//建表(看文档迁移)
Db.CodeFirst.InitTables<Student>(); //所有库都支持
//查询表的所有
var list = Db.Queryable<Student>().ToList();
//插入
Db.Insertable(new Student() { SchoolId = 1, Name = "jack" }).ExecuteCommand();
//更新
Db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand();
//删除
Db.Deleteable<Student>().Where(it => it.Id == 1).ExecuteCommand();
Console.WriteLine("恭喜你已经入门了,后面只需要用到什么查文档就可以了。");
Console.ReadKey();
//实体与数据库结构一样
public class Student
{
//数据是自增需要加上IsIdentity
//数据库是主键需要加上IsPrimaryKey
//注意:要完全和数据库一致2个属性
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
public int? SchoolId { get; set; }
public string? Name { get; set; }
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。