在另一个项目中使用.NET Aspire创建的SqlConnection

问题描述 投票:0回答:1

.NET Aspire 应用程序(net8.0、Aspire 8)已在 AppHost 中配置 SQL Server 容器。

在 Web 应用程序的

Program.cs
中,
builder.AddSqlServerClient("mySqlServer")
使用依赖项注入容器注册 SqlConnection 工厂。添加 SqlConnection 后,您可以使用 DI 获取作用域 SqlConnection 实例。

我可以在同一项目中直接使用此 SqlConnection,但我使用数据存储库项目来分离关注点(不是 EF Core,而是 Dapper)。数据存储库可通过 DI 从 Web 项目获取:

builder.Services.AddScoped<IDataRepository, DataRepository>();

Web 应用程序的 DI 容器中的 SqlConnection 可以从

.AddSqlServer()
传递到作用域 IDataRepository 吗?这将如何完成?

目前在 DataRepository 实现中,我使用环境变量中的连接字符串来创建 SqlConnection 对象,但我更喜欢使用由

.AddSqlServer()
创建的 SqlConnection,因为它已由 Aspire ServiceDefaults 配置。

c# azure asp.net-core azure-container-apps dotnet-aspire
1个回答
0
投票

您可以走到应用程序的

IConfiguration
并直接请求连接字符串。例如:

public class DataRepository(IConfiguration config)
{
    public async Task<T> GetAsync<T>(string id)
    {
        var connectionString = config.GetConnectionString("mySqlServer");
        // TODO: Use the connection string here...
    }
}

我对

DataRepository
类做了一些假设,但无论你在哪里调用
GetConnectionString
,想法都是一样的。

© www.soinside.com 2019 - 2024. All rights reserved.