# ConnectionStringBuilderExtensions Methods

- Package: [Aspire.Hosting](/reference/api/csharp/aspire.hosting.md)
- Type: [ConnectionStringBuilderExtensions](/reference/api/csharp/aspire.hosting/connectionstringbuilderextensions.md)
- Kind: `Methods`
- Members: `2`

Provides extension methods for adding connection string resources to an application.

## AddConnectionString(IDistributedApplicationBuilder, string, ReferenceExpression)

- Name: `AddConnectionString(IDistributedApplicationBuilder, string, ReferenceExpression)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<ConnectionStringResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ConnectionStringBuilderExtensions.cs#L43-L116)

Adds a connection string resource to the distributed application with the specified expression.

```csharp
public static class ConnectionStringBuilderExtensions
{
    public static IResourceBuilder<ConnectionStringResource> AddConnectionString(
        this IDistributedApplicationBuilder builder,
        string name,
        ReferenceExpression connectionStringExpression)
    {
        // ...
    }
}
```

## Parameters

- `builder` ([IDistributedApplicationBuilder](/reference/api/csharp/aspire.hosting/idistributedapplicationbuilder.md))
  Distributed application builder
- `name` (`string`)
  The name of the resource.
- `connectionStringExpression` ([ReferenceExpression](/reference/api/csharp/aspire.hosting/referenceexpression.md))
  The connection string expression.

## Returns

`IResourceBuilder<ConnectionStringResource>` -- An `ApplicationModel.IResourceBuilder`1` instance.

## Remarks

This method also enables appending custom data to the connection string based on other resources that expose connection strings.

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var apiKey = builder.AddParameter("apiKey", secret: true);

var cs = builder.AddConnectionString("cs", ReferenceExpression.Create($"Endpoint=http://something;Key={apiKey}"));

var backend = builder
    .AddProject<Projects.Backend>("backend")
    .WithReference(cs)
    .WaitFor(database);

builder.Build().Run();
```

## ATS metadata

### Ignored by ATS

- Reason: Polyglot app hosts use the internal addConnectionString dispatcher export.

## AddConnectionString(IDistributedApplicationBuilder, string, Action<ReferenceExpressionBuilder>)

- Name: `AddConnectionString(IDistributedApplicationBuilder, string, Action<ReferenceExpressionBuilder>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<ConnectionStringResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/bd20f904cde09ecb9c9ae5116a6f13614bf2d7c2/src/Aspire.Hosting/ConnectionStringBuilderExtensions.cs#L148-L150)

Adds a connection string resource to the distributed application with the specified expression.

```csharp
public static class ConnectionStringBuilderExtensions
{
    public static IResourceBuilder<ConnectionStringResource> AddConnectionString(
        this IDistributedApplicationBuilder builder,
        string name,
        Action<ReferenceExpressionBuilder> connectionStringBuilder)
    {
        // ...
    }
}
```

## Parameters

- `builder` ([IDistributedApplicationBuilder](/reference/api/csharp/aspire.hosting/idistributedapplicationbuilder.md))
  The distributed application builder.
- `name` (`string`)
  The name of the resource.
- `connectionStringBuilder` (`Action<ReferenceExpressionBuilder>`)
  The callback to configure the connection string expression.

## Returns

`IResourceBuilder<ConnectionStringResource>` -- An `ApplicationModel.IResourceBuilder`1` instance.

## Remarks

This method also enables appending custom data to the connection string based on other resources that expose connection strings.

## Examples

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var apiKey = builder.AddParameter("apiKey", secret: true);

var cs = builder.AddConnectionString("cs", b => b.Append($"Endpoint=http://something;Key={apiKey}"));

var backend = builder
    .AddProject<Projects.Backend>("backend")
    .WithReference(cs)
    .WaitFor(database);

builder.Build().Run();
```

## ATS metadata

### Ignored by ATS

- Reason: Polyglot app hosts should build a ReferenceExpression explicitly and use the canonical addConnectionString export.
