Wie kann ich auf den ConnectionString in meinem Modell zugreifen? Ich benutze Dapper. Die meisten Lösungen, die ich fand, benutzten EntityFramework und nicht Dapper.
Dies funktioniert auf meinem lokalen Rechner ( macOS ):
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
Dapper.DapperHelper.ConnectionString = Configuration["ConnectionStrings:MyConnectionString"];
}
Aber es funktioniert nicht auf Linux Debian .
Die Dapper.DapperHelper.ConnectionString
Eigenschaft ist auf Linux null, nachdem ich die Anwendung ausgeführt habe.
Der Inhalt meiner appsettings.json-Datei:
{
"ConnectionStrings": {
"MyConnectionString": "Server=ip; Database=db_name; User Id=my_user; Password=my_password; Pooling=false;" // SQL Server Authentication
},
"Logging": {
"IncludeScopes": false,
"Debug": {
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"LogLevel": {
"Default": "Warning"
}
}
}
}
Was mich stört ist, dass der gleiche Code auf macOS funktioniert, aber nicht auf Debian (linux).
In meiner Datei Program.cs musste ich folgendes ersetzen:
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseUrls("http://localhost:8888")
.Build();
}
mit diesem:
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((builderContext, config) =>
{
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
})
.UseStartup<Startup>()
.UseUrls("http://localhost:8888")
.Build();
}
Das ist das gleiche wie:
public static IWebHost BuildWebHost(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((builderContext, config) =>
{
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
})
.UseStartup<Startup>()
.UseUrls("http://localhost:8888")
.Build();
}
Liste der Verwendung von Deklarationen:
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
Dann funktionierte es unter Debian Linux und Mac OS.
Das hat mir geholfen, es herauszufinden: https://joonasw.net/view/aspnet-core-2-configuration-changes
Aber dieser Teil:
WebHost.CreateDefaultBuilder ASP.NET Core 2.0 bietet eine praktische Methode zum Erstellen einer sehr typischen Konfiguration für eine Anwendung.
Anstatt das zu schreiben:
...
Du kannst einfach schreiben:
...
trifft nicht auf Debian Linux zu. Dies funktioniert nur unter macOS. Habe es nicht unter Windows getestet.
Ich habe dies auch als Fehler gemeldet: https://github.com/dotnet/corefx/issues/24446