freesql 实现多数据库连接与操作 示例教程
时间: 2025-07-06 12:55:04 浏览: 0
### 使用 FreeSql 实现多数据库连接与操作
#### 创建多个数据库实例
为了支持多数据库的操作,可以通过创建不同的 `IFreeSql` 实例来分别配置不同类型的数据库。每个实例都独立管理自己的连接字符串和其他设置。
对于 MySQL 数据库,推荐使用 `FreeSql.Provider.MySqlConnector` 而不是传统的 `FreeSql.Provider.MySql`,因为前者具有更好的性能和稳定性[^1]:
```csharp
var fsqlMysql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.MySql, "Server=localhost;Port=3306;Database=testdb;Uid=root;Pwd=password;")
.UseProvider(FreeSql.Providers.MySqlConnector)
.Build();
```
针对达梦 V8 数据库,则按照特定的连接格式初始化另一个 `IFreeSql` 对象[^2]:
```csharp
var fsqlDameng = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.DamengV8, "Server=192.168.2.14:5236;User Id=SA;PWD=123$Oops;DATABASE=TestDB;poolsize=5")
.Build();
```
#### 统一接口处理多种数据源
当应用程序需要同时访问多个异构的数据存储时,可以定义统一的服务层或仓储模式来封装具体的数据库逻辑。这样做的好处是可以让业务代码保持一致性和可维护性,而不需要关心底层使用的具体数据库类型。
例如,在 C# 中通过泛型方法查询来自两个不同数据库的信息列表:
```csharp
public class Repository<T>
{
private readonly IFreeSql _freeSql;
public Repository(IFreeSql freeSql)
{
_freeSql = freeSql;
}
public List<T> GetAllRecords()
{
return _freeSql.Select<T>().ToList();
}
}
// Usage example with different databases
var mysqlRepo = new Repository<DataInfo>(fsqlMysql);
List<DataInfo> mysqlData = mysqlRepo.GetAllRecords();
var damengRepo = new Repository<DamoInfo>(fsqlDameng);
List<DamoInfo> damoData = damengRepo.GetAllRecords();
```
这种设计使得即使将来要更换某个数据库供应商或者增加新的数据源也变得相对容易,只需修改相应的 `IFreeSql` 配置即可完成迁移工作。
阅读全文
相关推荐


















