You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:46:11