Dapper笔记-Dapper.Extensions
介绍
1.支持 MySQL、SQL Server、PostgreSQL、SQLite 和 ODBC。
2.支持缓存。
3.支持sql分离。
4.支持读写分离。
5.支持性能监控。
相关Nuget包
Dapper.Extensions
Dapper.Extensions.NetCore
Dapper.Extensions.MySQL
Dapper.Extensions.MSSQL
Dapper.Extensions.PostgreSQL
Dapper.Extensions.ODBC
Dapper.Extensions.SQLite
Dapper.Extensions.Caching.Redis
Dapper.Extensions.Caching.Memory
Dapper.Extensions.MiniProfiler
开始
1、安装nuget
<ItemGroup>
<PackageReference Include="Dapper.Contrib" Version="2.0.78" />
<PackageReference Include="Dapper.Extensions.MySQL" Version="4.0.5" />
</ItemGroup>
2、添加配置
{
"ConnectionStrings": {
"DefaultConnection": "Server=***;Port=3306;Database=dapper.master; User=root;Password=123;",
"mysql_master_slave": {
"Master": "Server=***;Port=3306;Database=dapper.master; User=root;Password=123;",
"Slaves": [
{
"ConnectionString": "Server=***;Port=3306;Database=dapper.slave1; User=root;Password=123;",
"Weight": 4
},
{
"ConnectionString": "Server=***;Port=3306;Database=dapper.slave1; User=root;Password=123;",
"Weight": 6
}
]
}
}
}
3、program添加
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews().AddControllersAsServices(); ;
//替换内置的ServiceProviderFactory
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer<ContainerBuilder>(containerBuilder =>
{
containerBuilder.AddDapperForMySQL();
containerBuilder.AddDapperForMySQL("mysql_master_slave", "mysql_master_slave", true);
containerBuilder.AddAllControllers();
});
4、controller
public class HomeController : Controller
{
private readonly IDapper defaultDapper;
private readonly IDapper masterDapper;
private readonly IDapper slaveDapper;
public HomeController(
IDapper defaultDapper, //DefaultConnection
[DependencyDapper("mysql_master_slave")] IDapper masterDapper,
[DependencyDapper("mysql_master_slave", true)] IDapper slaveDapper)
{
this.defaultDapper = defaultDapper;
this.masterDapper = masterDapper;
this.slaveDapper = slaveDapper;
var defaultConnStr = defaultDapper.Conn.Value.ConnectionString;
var masterConnStr = masterDapper.Conn.Value.ConnectionString;
var slaveConnStr = slaveDapper.Conn.Value.ConnectionString;
}
//使用DefaultConnection
public async Task<IActionResult> Index()
{
//Insert方式使用Dapper.Contrib包
long id = defaultDapper.Conn.Value.Insert(new UserInfo { Name = "fan1", Age = 10, Birthday = DateTime.Now, CreateTime = DateTime.Now });
List<UserInfo> userInfoList = await defaultDapper.QueryAsync<UserInfo>("select * from UserInfo");
return View();
}
//主从
public async Task<IActionResult> Index1()
{
List<UserInfo> userInfoList1 = await masterDapper.QueryAsync<UserInfo>("select * from UserInfo");
List<UserInfo> userInfoList2 = await slaveDapper.QueryAsync<UserInfo>("select * from UserInfo");
return View();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异