技術共有

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 Dappper と同じです)
SqlSugarClient Db = 新しい SqlSugarClient(新しい ConnectionConfig()
{
接続文字列 = "データソース=demo.db",
DbType = DbType.Sqlite、
IsAutoCloseConnection = true
},
デシベル =&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(新しいStudent() { SchoolId = 1、名前 = "jack" }).ExecuteCommand();

//更新する
Db.Updateable(新しい Student() { Id = 1、SchoolId = 2、Name = "jack2" }).ExecuteCommand();

//消去
Db.削除可能<Student> ().Where(it =&gt; it.Id == 1).ExecuteCommand();


Console.WriteLine("開始おめでとうございます。後でドキュメントを確認する必要があります。");
コンソールのキーを読み取ります。
 

//エンティティはデータベースと同じ構造を持っています
パブリッククラス 学生
{
// データは自己増加するため、IsIdentity を使用して追加する必要があります
//データベースは主キーなので、IsPrimaryKey を使用して追加する必要があります
//注: 2 つの属性はデータベースと完全に一致している必要があります
[SugarColumn(IsPrimaryKey = true、IsIdentity = true)]
パブリック int Id { 取得; 設定; }
パブリック int? SchoolId { 取得; 設定; }
パブリック文字列?名前{取得;設定;}
}