Compartilhamento de tecnologia

SqlSugar-Use SqlSugar para operações com vários bancos de dados

2024-07-12

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

Usar o SqlSugar para realizar operações com vários bancos de dados envolve principalmente as seguintes etapas:

1. Configure a conexão do banco de dados

Primeiro, você precisa definir o arquivo de configuração em seu projeto (por exemplo,appsettings.jsonweb.configouapp.config ) Configure cadeias de conexão para vários bancos de dados. Cada cadeia de conexão corresponde a um banco de dados diferente.

Por exemplo, emappsettings.json, você pode configurá-lo assim:

 

json复制代码

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

2. Crie uma instância SqlSugarClient

Para cada banco de dados que você precisa operar, você precisa criar umSqlSugarClientinstância e passe a configuração de conexão de banco de dados correspondente ao criá-la.

 

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. Execute operações de banco de dados

Agora você pode usar estesSqlSugarClient instância para executar operações de banco de dados. De acordo com as necessidades do seu negócio, selecione a instância correspondente para operar o banco de dados correspondente.

 

csharp复制代码

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

4. Precauções para operações entre bancos de dados

  • Consulta entre bancos de dados : o próprio SqlSugar não oferece suporte direto a consultas conjuntas entre bancos de dados (JOIN). Se precisar realizar consultas federadas entre diferentes bancos de dados, talvez seja necessário mesclar os dados na camada de aplicativo ou considerar o uso de uma solução em nível de banco de dados (como o servidor vinculado do SQL Server).
  • processamento de transações : para operações que exigem consistência de dados em vários bancos de dados, talvez você queira usar transações distribuídas. O próprio SqlSugar não fornece suporte direto a transações distribuídas, mas você pode usar .NETSystem.Transactions Classes no namespace para gerenciar transações distribuídas. No entanto, esteja ciente do desempenho e da complexidade das transações distribuídas.
  • Considerações de desempenho : ao executar operações com vários bancos de dados, considere o desempenho e a carga de cada banco de dados. Evite grandes quantidades de operações simultâneas em vários bancos de dados ao mesmo tempo, o que pode causar problemas de desempenho.

5. Resumo

Usar o SqlSugar para operações com vários bancos de dados envolve principalmente a configuração de múltiplas conexões de banco de dados e a criação de váriosSqlSugarClient Instância e selecione a instância correspondente para executar operações de banco de dados com base nas necessidades de negócios. Deve-se observar que a consulta entre bancos de dados e o processamento de transações distribuídas podem exigir considerações e configurações adicionais. Além disso, deve-se prestar atenção ao desempenho e à carga de cada banco de dados para garantir a estabilidade e o desempenho do sistema.

Em anexo está o código da aplicação SqlSugar:

usando SqlSugar;


//Criar objeto de banco de dados (o uso é o mesmo do EF Dapppper para garantir a segurança do thread por meio de novo)
SqlSugarClient Db = novo SqlSugarClient(novo ConnectionConfig()
{
ConnectionString = "fonte de dados=demo.db",
TipoDb = TipoDb.Sqlite,
IsAutoCloseConnection = verdadeiro
},
db =&gt; {
 
db.Aop.OnLogExecuting = (sql, pars) =&gt;
    {

//Obter recomendação de SQL nativo 5.1.4.63, o desempenho está OK
Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));

//Obter SQL sem parâmetros tem impacto no desempenho. SQL especialmente grande com muitos parâmetros deve ser usado para depuração.
//Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))


    };

//Observe que a multilocação tem diversas configurações.
//db.GetConnection(i).Aop

});

//Construir banco de dados
Db.DbMaintenance.CreateDatabase(); // Dameng e Oracle não suportam criação de banco de dados

//Cria uma tabela (ver migração de documentos)
Db.CodeFirst.InitTables<Student> (); //Todas as bibliotecas suportam

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

//inserir
Db.Insertable(new Aluno() { SchoolId = 1, Nome = "jack" }).ExecuteCommand();

//renovar
Db.Updateable(novo Aluno() { Id = 1, SchoolId = 2, Nome = "jack2" }).ExecuteCommand();

//excluir
Db.Deletável<Student> ().Onde(it =&gt; it.Id == 1).ExecuteCommand();


Console.WriteLine("Parabéns por começar, você só precisa verificar a documentação mais tarde.");
Console.ReadKey();
 

//A entidade tem a mesma estrutura do banco de dados
classe pública estudante
{
//Os dados aumentam automaticamente e precisam ser adicionados com IsIdentity
//O banco de dados é a chave primária e precisa ser adicionado com IsPrimaryKey
//Nota: Dois atributos devem ser completamente consistentes com o banco de dados
[SugarColumn(IsPrimaryKey = verdadeiro, IsIdentity = verdadeiro)]
público int Id { obter; definir; }
público int? SchoolId { obter; definir; }
string pública? Nome { obter; definir; }
}