Обмен технологиями

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;


//Создаем объект базы данных (используется так же, как EF Dapppper, чтобы обеспечить потокобезопасность посредством нового)
База данных SqlSugarClient = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "datasource=demo.db",
Тип_БД = Тип_БД.Sqlite,
IsAutoCloseConnection = true
},
БД =&gt; {
 
db.Aop.OnLogExecuting = (sql, pars) =&gt;
    {

//Получаем рекомендацию по встроенному SQL 5.1.4.63, производительность в порядке
Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));

//Получение SQL без параметров влияет на производительность. Для отладки следует использовать особенно большой SQL с множеством параметров.
//Консоль.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))


    };

//Обратите внимание, что мультитенантность имеет несколько настроек.
//db.GetConnection(i).Aop

});

//Создаем базу данных
Db.DbMaintenance.CreateDatabase(); // Dameng и Oracle не поддерживают создание базы данных

//Создаем таблицу (см. миграцию документа)
Db.CodeFirst.InitTables<Student> (); //Поддержка всех библиотек

//Запрашиваем всю таблицу
var list = Db.Queryable<Student> ().К списку();

//вставлять
Db.Insertable(new Student() { SchoolId = 1, Name = "jack" }).ExecuteCommand();

//обновляем
Db.Updateable(new Student() { Id = 1, SchoolId = 2, Name = "jack2" }).ExecuteCommand();

//удалить
Db.Удаляемый<Student> ().Где(it =&gt; it.Id == 1).ExecuteCommand();


Console.WriteLine("Поздравляем с началом работы, вам просто нужно будет позже проверить документацию.");
Консоль.ReadKey();
 

//Субъект имеет ту же структуру, что и база данных
публичный класс Студент
{
//Данные самоувеличиваются, и их необходимо добавить с помощью IsIdentity
//База данных является первичным ключом, и ее необходимо добавить с помощью IsPrimaryKey.
//Примечание: два атрибута должны полностью соответствовать базе данных
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
публичный int Id { получить; установить; }
public int?SchoolId { получить; установить; }
публичная строка? Имя { получить; установить; }
}