Condivisione della tecnologia

SqlSugar: utilizza SqlSugar per operazioni multi-database

2024-07-12

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

L'utilizzo di SqlSugar per eseguire operazioni multi-database prevede principalmente i seguenti passaggi:

1. Configurare la connessione al database

Innanzitutto, devi impostare il file di configurazione nel tuo progetto (ad es.appsettings.jsonweb.configOapp.config ) Configurare stringhe di connessione per più database. Ogni stringa di connessione corrisponde a un database diverso.

Ad esempio, nelappsettings.json, puoi configurarlo in questo modo:

 

json复制代码

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

2. Creare l'istanza SqlSugarClient

Per ogni database su cui si vuole operare è necessario creare un fileSqlSugarClientistanza e passare la configurazione di connessione al database corrispondente durante la creazione.

 

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. Eseguire operazioni sul database

Ora puoi usare questiSqlSugarClient istanza per eseguire operazioni sul database. In base alle tue esigenze aziendali, seleziona l'istanza corrispondente per gestire il database corrispondente.

 

csharp复制代码

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

4. Precauzioni per le operazioni tra database

  • Interrogazione tra database : SqlSugar stesso non supporta direttamente le query congiunte tra database (JOIN). Se è necessario eseguire query federate tra database diversi, potrebbe essere necessario unire i dati a livello di applicazione o prendere in considerazione l'utilizzo di una soluzione a livello di database (come il server collegato di SQL Server).
  • transazione in corso : per le operazioni che richiedono la coerenza dei dati su più database, è possibile utilizzare transazioni distribuite. SqlSugar stesso non fornisce direttamente il supporto per le transazioni distribuite, ma è possibile utilizzare .NETSystem.Transactions Classi nello spazio dei nomi per gestire le transazioni distribuite. Tuttavia, è necessario essere consapevoli delle prestazioni e della complessità delle transazioni distribuite.
  • Considerazioni sulle prestazioni : quando si eseguono operazioni su più database, considerare le prestazioni e il carico di ciascun database. Evitare grandi quantità di operazioni simultanee su più database contemporaneamente, che potrebbero causare problemi di prestazioni.

5. Riepilogo

L'utilizzo di SqlSugar per operazioni multi-database implica principalmente la configurazione di più connessioni al database e la creazione di più connessioniSqlSugarClient Istanza e selezionare l'istanza corrispondente per eseguire operazioni di database in base alle esigenze aziendali. È opportuno notare che le query tra database e l'elaborazione delle transazioni distribuite possono richiedere considerazioni e configurazioni aggiuntive. Inoltre, è necessario prestare attenzione alle prestazioni e al carico di ciascun database per garantire la stabilità e le prestazioni del sistema.

In allegato è riportato il codice dell'applicazione SqlSugar:

utilizzando SqlSugar;


//Crea un oggetto database (l'utilizzo è lo stesso di EF Dapppper per garantire la sicurezza del thread attraverso il nuovo)
SqlSugarClient Db = nuovo SqlSugarClient(nuovo ConnectionConfig()
{
Stringa di connessione = "datasource=demo.db",
Tipo di database = Tipo di database.Sqlite,
IsAutoCloseConnection = vero
},
database =&gt; {
 
db.Aop.OnLogExecuting = (sql, pars) =&gt;
    {

//Ottieni la raccomandazione SQL nativa 5.1.4.63, le prestazioni sono OK
Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));

//Ottenere SQL senza parametri ha un impatto sulle prestazioni. Per il debug è necessario utilizzare SQL particolarmente grande con molti parametri.
//Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))


    };

//Nota che la multi-tenancy ha diverse impostazioni.
//db.GetConnection(i).Aop

});

//Costruisci il database
Db.DbMaintenance.CreateDatabase(); // Dameng e Oracle non supportano la creazione di database

//Crea una tabella (vedi migrazione del documento)
Db.CodeFirst.InitTables<Student> (); //Tutte le librerie supportano

//Interroga tutta la tabella
var list = Db.Queryable<Student> ().Elencare();

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

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

//eliminare
Db.Eliminabile<Student> ().Dove(esso =&gt; ​​esso.Id == 1).EseguiComando();


Console.WriteLine("Congratulazioni per aver iniziato, devi solo controllare la documentazione più tardi.");
Console.ReadKey();
 

//L'entità ha la stessa struttura del database
classe pubblica studente
{
//I dati sono autoaumentanti e devono essere aggiunti con IsIdentity
//Il database è la chiave primaria e deve essere aggiunto con IsPrimaryKey
//Nota: due attributi devono essere completamente coerenti con il database
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
pubblico int Id { ottieni; imposta; }
pubblico int? SchoolId { ottieni; imposta; }
stringa pubblica? Nome { get; set; }
}