기술나눔

SqlSugar - 다중 데이터베이스 작업에 SqlSugar 사용

2024-07-12

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

SqlSugar를 사용하여 다중 데이터베이스 작업을 수행하는 작업에는 주로 다음 단계가 포함됩니다.

1. 데이터베이스 연결 구성

먼저 프로젝트에서 구성 파일을 설정해야 합니다(예:appsettings.jsonweb.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;",
// 可以继续添加更多数据库的连接字符串
}
}

2. SqlSugarClient 인스턴스 생성

작업해야 하는 각 데이터베이스에 대해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,
// 其他配置...
});

3. 데이터베이스 작업 수행

이제 이것들을 사용할 수 있습니다SqlSugarClient 데이터베이스 작업을 수행하는 인스턴스입니다. 귀하의 비즈니스 요구에 따라 해당 인스턴스를 선택하여 해당 데이터베이스를 운영하십시오.

 

csharp复制代码

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

4. 데이터베이스 간 작업 시 주의사항

  • 데이터베이스 간 쿼리 : SqlSugar 자체는 JOIN(교차 데이터베이스 공동 쿼리)을 직접 지원하지 않습니다. 서로 다른 데이터베이스 간에 연합 쿼리를 수행해야 하는 경우 응용 프로그램 계층에서 데이터를 병합하거나 데이터베이스 수준 솔루션(예: SQL Server의 연결된 서버) 사용을 고려해야 할 수 있습니다.
  • 거래 처리 : 여러 데이터베이스에서 데이터 일관성이 필요한 작업의 경우 분산 트랜잭션을 사용할 수 있습니다. SqlSugar 자체는 분산 트랜잭션 지원을 직접 제공하지 않지만 .NET을 사용할 수 있습니다.System.Transactions 분산 트랜잭션을 관리하기 위한 네임스페이스의 클래스입니다. 그러나 분산 트랜잭션의 성능과 복잡성을 알고 있어야 합니다.
  • 성능 고려 사항 : 다중 데이터베이스 작업을 수행하는 경우 각 데이터베이스의 성능과 부하를 고려하십시오. 여러 데이터베이스에서 동시에 많은 양의 동시 작업을 수행하면 성능 문제가 발생할 수 있으므로 피하십시오.

5. 요약

다중 데이터베이스 작업에 SqlSugar를 사용하려면 주로 여러 데이터베이스 연결을 구성하고 여러 데이터베이스를 생성해야 합니다.SqlSugarClient 인스턴스를 선택하고 해당 인스턴스를 선택하여 비즈니스 요구에 따라 데이터베이스 작업을 수행합니다. 데이터베이스 간 쿼리 및 분산 트랜잭션 처리에는 추가 고려 사항 및 구성이 필요할 수 있다는 점에 유의해야 합니다. 또한, 시스템 안정성과 성능을 보장하기 위해서는 각 데이터베이스의 성능과 부하에도 주의를 기울여야 합니다.

첨부된 내용은 SqlSugar 애플리케이션 코드입니다.

SqlSugar를 사용하여;


//데이터베이스 객체 생성(new를 통해 스레드 안전성을 보장하기 위해 사용법은 EF Dapppper와 동일)
SqlSugarClient Db = 새 SqlSugarClient(새 ConnectionConfig()
{
ConnectionString = "데이터소스=demo.db",
DbType = DbType.Sqlite,
IsAutoCloseConnection = 참
},
디비 =&gt; {
 
db.Aop.OnLogExecuting = (sql, pars) =&gt;
    {

//네이티브 SQL 권장 사항 5.1.4.63 가져오기, 성능은 양호
Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));

//매개변수가 없는 SQL을 가져오는 것은 성능에 영향을 미칩니다. 특히 매개변수가 많은 대규모 SQL은 디버깅에 사용해야 합니다.
//Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))


    };

//멀티 테넌시에는 여러 가지 설정이 있습니다.
//db.GetConnection(i).Aop

});

//데이터베이스 구축
Db.DbMaintenance.CreateDatabase(); // Dameng과 Oracle은 데이터베이스 생성을 지원하지 않습니다.

//테이블 생성(문서 마이그레이션 참조)
Db.CodeFirst.InitTables<Student> (); //모든 라이브러리 지원

//테이블 전체 쿼리
var 리스트 = Db.Queryable<Student> ().ToList();

//끼워 넣다
Db.Insertable(새 학생() { 학교 ID = 1, 이름 = "jack" }).ExecuteCommand();

//고쳐 쓰다
Db.Updateable(새 학생() { ID = 1, 학교 ID = 2, 이름 = "jack2" }).ExecuteCommand();

//삭제
Db.삭제 가능<Student> ().Where(it =&gt; it.Id == 1).ExecuteCommand();


Console.WriteLine("시작을 축하합니다. 나중에 문서를 확인하면 됩니다.");
콘솔.키 읽기();
 

//엔티티는 데이터베이스와 동일한 구조를 가집니다.
공개 수업 학생
{
//데이터가 자동으로 증가하므로 IsIdentity를 사용하여 추가해야 합니다.
//데이터베이스는 기본 키이므로 IsPrimaryKey를 사용하여 추가해야 합니다.
//참고: 두 속성은 데이터베이스와 완전히 일치해야 합니다.
[SugarColumn(기본 키 = 참, ID = 참)]
공개 int Id { get; set; }
public int? SchoolId { get; set; }
public string? 이름 { get; set; }
}