Aspire is the new visualizer – see https://github.com/dotnet/aspire
When creating a Docker container with Sql Server,the connection that is returned is without database – means that,usually,is connecting to the master.
That’s not that we usually want,so the following code is means that WebAPI will be connected to master
var builder = DistributedApplication.CreateBuilder(args);
var rb= builder.AddSqlServerContainer("Db2Gui","<YourStrong@Passw0rd>");
builder.AddProject<Projects.ExampleWebAPI>(nameof(Projects.ExampleWebAPI))
.WithReference(rb)
;
Instead,do what they do – but add the database
var builder = DistributedApplication.CreateBuilder(args);
var rb= builder.AddSqlServerContainer("Db2Gui","<YourStrong@Passw0rd>");
builder.AddProject<Projects.ExampleWebAPI>(nameof(Projects.ExampleWebAPI))
.WithEnvironment(ctx=>
{
var connectionStringName = $"ConnectionStrings__";
var res=rb.Resource;
var cn = res.GetConnectionString();
ctx.EnvironmentVariables[connectionStringName+ "ApplicationDBContext"] = cn+ $";database=tests;";
ctx.EnvironmentVariables[connectionStringName+ "NorthwindDBContext"] = cn + $";database=northwind;";
ctx.EnvironmentVariables[connectionStringName+ "PubsDBContext"] = cn + $";database=pubs;";
})
//.WithReference(rb,"")
;
It is true that you can make the following :
builder.AddProject<Projects.ExampleWebAPI>(nameof(Projects.ExampleWebAPI))
.WithReference(rb.AddDatabase("tests"),"ApplicationDBContext")
.WithReference(rb.AddDatabase("northwind"),"NorthwindDBContext")
.WithReference(rb.AddDatabase("pubs"),"PubsDBContext")
.WithReference(rb.AddDatabase("NotCreated"),"NotCreated")
;
But it does not CREATE the database ( and it is a good thing …. EF EnsureCreated verifies JUST the existence of the database not of the tables within)
So thats why I prefer WithEnvironment rather than .WithReference(rb.AddDatabase
Leave a Reply