在Aspire中配置多ASP.NET MVC端点共享SQL Server连接
.NET Aspire 共享SQL Server连接配置及使用指南
1. 配置共享SQL Server作为端点依赖项
修改你的AppHost项目的Program.cs,添加共享SQL Server实例并建立与三个端点的依赖关系:
var builder = DistributedApplication.CreateBuilder(args); // 添加共享SQL Server实例,指定实例名称为"carsql" var sqlServer = builder.AddSqlServer("carsql"); // 将每个端点项目关联到该SQL Server实例,确保启动顺序依赖 builder.AddProject<Projects.CarRental_EndPoint_Admin_Web>("admin") .WithReference(sqlServer); builder.AddProject<Projects.CarRental_EndPoint_Renter_Web>("renter") .WithReference(sqlServer); builder.AddProject<Projects.CarRenter_EndPoint_Rentor_Web>("rentor") .WithReference(sqlServer); builder.Build().Run();
配置完成后,启动AppHost时会自动拉起SQL Server实例,待其就绪后再启动三个端点,实现一键同步启动的依赖管理。
2. 在端点项目中访问并使用共享连接
步骤1:安装对应NuGet包
根据你的数据访问方式,在每个端点项目中安装Aspire适配包:
- 使用
SqlClient:安装Aspire.Microsoft.Data.SqlClient - 使用Entity Framework Core:安装
Aspire.Microsoft.EntityFrameworkCore.SqlServer
步骤2:配置端点服务
在每个端点项目的Program.cs中配置数据服务:
方式1:基于SqlClient
var builder = WebApplication.CreateBuilder(args); // 注入Aspire提供的共享SQL Server连接 builder.AddSqlClient("carsql"); // 其他服务、中间件配置... var app = builder.Build(); app.Run();
方式2:基于EF Core
假设你的DbContext为CarRentalDbContext:
var builder = WebApplication.CreateBuilder(args); // 配置DbContext,读取Aspire注入的共享连接字符串 builder.AddDbContext<CarRentalDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("carsql"))); // 其他服务、中间件配置... var app = builder.Build(); app.Run();
步骤3:业务代码中使用连接
在控制器或服务中直接注入对应的对象即可:
SqlClient示例
public class AdminController : Controller { private readonly SqlConnection _dbConnection; public AdminController(SqlConnection dbConnection) { _dbConnection = dbConnection; } public async Task<IActionResult> Index() { await _dbConnection.OpenAsync(); // 执行SQL查询或操作 return View(); } }
EF Core示例
public class RenterController : Controller { private readonly CarRentalDbContext _dbContext; public RenterController(CarRentalDbContext dbContext) { _dbContext = dbContext; } public async Task<IActionResult> Index() { var rentalList = await _dbContext.Rentals.ToListAsync(); return View(rentalList); } }
内容的提问来源于stack exchange,提问作者Aliaz
相关产品推荐
相关产品推荐

