Compartir tecnología

SqlSugar: utilice SqlSugar para operaciones de múltiples bases de datos

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

El uso de SqlSugar para realizar operaciones de múltiples bases de datos implica principalmente los siguientes pasos:

1. Configurar la conexión a la base de datos

Primero, necesita configurar el archivo de configuración en su proyecto (p. ej.appsettings.jsonweb.configoapp.config ) Configurar cadenas de conexión para múltiples bases de datos. Cada cadena de conexión corresponde a una base de datos diferente.

Por ejemplo, enappsettings.json, puedes configurarlo así:

 

json复制代码

{
"ConnectionStrings": {
"DefaultConnectionSqlServer": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;",
"DefaultConnectionMySql": "server=localhost;user=root;password=myPassword;database=myOtherDataBase;",
// 可以继续添加更多数据库的连接字符串
}
}

2. Cree una instancia de SqlSugarClient

Para cada base de datos en la que necesita operar, debe crear unaSqlSugarClientinstancia y pase la configuración de conexión de base de datos correspondiente al crearla.

 

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,
// 其他配置...
});

3. Realizar operaciones de base de datos.

Ahora puedes usar estosSqlSugarClient instancia para realizar operaciones de base de datos. Según sus necesidades comerciales, seleccione la instancia correspondiente para operar la base de datos correspondiente.

 

csharp复制代码

// 使用SqlServer数据库实例插入数据
var user = new User { Name = "张三", Age = 20 };
var id = dbClientSqlServer.Insertable(user).ExecuteReturnIdentity();
// 使用MySql数据库实例查询数据
var userList = dbClientMySql.Queryable<User>().ToList();

4. Precauciones para operaciones entre bases de datos

  • Consulta entre bases de datos : SqlSugar en sí no admite directamente consultas conjuntas entre bases de datos (JOIN). Si necesita realizar consultas federadas entre diferentes bases de datos, es posible que deba fusionar los datos en la capa de aplicación o considerar usar una solución a nivel de base de datos (como el servidor vinculado de SQL Server).
  • procesamiento de transacciones : Para operaciones que requieren coherencia de datos en varias bases de datos, es posible que desee utilizar transacciones distribuidas. SqlSugar en sí no proporciona directamente soporte para transacciones distribuidas, pero puede usar .NETSystem.Transactions Clases en el espacio de nombres para gestionar transacciones distribuidas. Sin embargo, tenga en cuenta el rendimiento y la complejidad de las transacciones distribuidas.
  • Consideraciones de rendimiento : Al realizar operaciones de múltiples bases de datos, considere el rendimiento y la carga de cada base de datos. Evite grandes cantidades de operaciones simultáneas en varias bases de datos al mismo tiempo, lo que puede causar problemas de rendimiento.

5. Resumen

El uso de SqlSugar para operaciones de múltiples bases de datos implica principalmente configurar múltiples conexiones de bases de datos y crear múltiplesSqlSugarClient Instancia y seleccione la instancia correspondiente para realizar operaciones de base de datos según las necesidades comerciales. Cabe señalar que las consultas entre bases de datos y el procesamiento de transacciones distribuidas pueden requerir consideraciones y configuraciones adicionales. Además, se debe prestar atención al rendimiento y la carga de cada base de datos para garantizar la estabilidad y el rendimiento del sistema.

Adjunto el código de la aplicación SqlSugar:

utilizando SqlSugar;


//Crear un objeto de base de datos (el uso es el mismo que EF Dapppper para garantizar la seguridad de los subprocesos a través de nuevos)
Base de datos SqlSugarClient = nuevo SqlSugarClient(nueva ConnectionConfig()
{
Cadena de conexión = "origen de datos=demo.db",
TipoDb = TipoDb.Sqlite,
IsAutoCloseConnection = verdadero
},
base de datos =&gt; {
 
db.Aop.OnLogExecuting = (sql, pars) =&gt;
    {

//Obtenga la recomendación SQL nativa 5.1.4.63, el rendimiento es correcto
Consola.WriteLine(UtilMethods.GetNativeSql(sql, pars));

// Obtener SQL sin parámetros tiene un impacto en el rendimiento. Se debe utilizar SQL especialmente grande con muchos parámetros para la depuración.
//Consola.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))


    };

//Tenga en cuenta que el arrendamiento múltiple tiene varias configuraciones.
//db.ObtenerConexión(i).Aop

});

//Construir base de datos
Db.DbMaintenance.CreateDatabase(); // Dameng y Oracle no admiten la creación de bases de datos

//Crear una tabla (ver migración de documentos)
Db.CodeFirst.InitTables<Student> (); //Todas las bibliotecas son compatibles

//Consulta toda la tabla
var lista = Db.Queryable<Student> ().Listar();

//insertar
Db.Insertable(new Student() { SchoolId = 1, Nombre = "jack" }).ExecuteCommand();

//renovar
Db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand();

//borrar
Db.Eliminable<Student> (). Donde(es =&gt; es.Id == 1).EjecutarComando();


Console.WriteLine("Felicitaciones por comenzar, solo necesita consultar la documentación más tarde.");
Consola.ReadKey();
 

//La entidad tiene la misma estructura que la base de datos.
Clase pública Estudiante
{
//Los datos aumentan automáticamente y deben agregarse con IsIdentity
//La base de datos es la clave principal y debe agregarse con IsPrimaryKey
//Nota: dos atributos deben ser completamente consistentes con la base de datos
[ColumnaAzúcar(IsPrimaryKey = verdadero, IsIdentity = verdadero)]
público int Id { obtener; establecer; }
public int? SchoolId { obtener; establecer; }
cadena pública? Nombre { obtener; establecer; }
}