0

Wenn der Konfigurationswert in meinem Kontext Konstruktor Referenzierung Gesicht ich keine Probleme mit Datenbankanbindung:Verbindungszeichenfolge im Konstruktor vs. app.config?

public class MyDbContext : DbContext 
{ 
    public MyDbContext() 
     : base("Name=Model1") 
    { 
    } 
} 

Mein App.config Verbindungszeichenfolge sieht wie folgt aus:

<connectionStrings> 
    <add name="Model1" 
     connectionString="data source=10.4.4.3;initial catalog=mydatabase;persist security info=True;user id=myuser;password=mypass;MultipleActiveResultSets=True;App=EntityFramework" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 

Allerdings, wenn ich Hard- Code, um die Verbindung wie folgt:

public class MyDbContext : DbContext 
{ 
    public MyDbContext() 
     : base(@"data source=10.4.4.3;initial catalog=mydatabase;persist security info=True;user id=myuser;password=mypass;MultipleActiveResultSets=True;App=EntityFramework") 
    { 
    } 
} 

die Ausnahme ich erhalte ist:

{System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognized element. (C:\ProgramData\SF\vm0\Fabric\work\Applications\abc.API.ProdAndPrice.O720.ProdLinesType_App285\ComponentsPkg.Code.1.0.0\Components.exe.Config line 38) 
    at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal) 
    at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors) 
    at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey) 
    --- End of inner exception stack trace --- 
    at System.Configuration.ConfigurationManager.PrepareConfigSystem() 
    at System.Configuration.ConfigurationManager.GetSection(String sectionName) 
    at System.Configuration.PrivilegedConfigurationManager.GetSection(String sectionName) 
    at System.Diagnostics.DiagnosticsConfiguration.GetConfigSection() 
    at System.Diagnostics.DiagnosticsConfiguration.Initialize() 
    at System.Diagnostics.DiagnosticsConfiguration.get_IndentSize() 
    at System.Diagnostics.TraceInternal.InitializeSettings() 
    at System.Diagnostics.TraceInternal.get_Listeners() 
    --- End of inner exception stack trace --- 
    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) 
    at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) 
    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) 
    at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index) 
    at Microsoft.Owin.Hosting.Utilities.SettingsLoader.FromConfigImplementation..ctor() 
    at Microsoft.Owin.Hosting.Utilities.SettingsLoader.<LoadFromConfig>b__0() 
    at System.Threading.LazyInitializer.EnsureInitializedCore[T](T& target, Func`1 valueFactory) 
    at Microsoft.Owin.Hosting.Utilities.SettingsLoader.LoadFromConfig(IDictionary`2 settings) 
    at Microsoft.Owin.Hosting.Engine.StartContext..ctor(StartOptions options) 
    at Microsoft.Owin.Hosting.WebApp.StartImplementation(IServiceProvider services, StartOptions options, Action`1 startup) 
    at Microsoft.Owin.Hosting.WebApp.Start(String url, Action`1 startup) 
    at Components.OwinCommunicationListener.OpenAsync(CancellationToken cancellationToken) in F:\TFS\ooo720 Res\ooo720\DEV\Source\enterprise\abc.API.ProdAndPrice.O720.ProdLines\Components\OwinCommunicationListener.cs:line 78 
    at Microsoft.ServiceFabric.Services.Runtime.StatelessServiceInstanceAdapter.<OpenCommunicationListenersAsync>d__19.MoveNext()} 

Was mache ich falsch? Warum schlägt die Verbindung fehl?

+0

Wenn Sie in Ihrem ersten Code-Snippet bemerken Sie tun dies 'base ("Name = Model1") '. Sie geben Ihrem Code den Namen der Verbindungszeichenfolge, die Sie in Ihrer app.config finden. Ihr letzter abgeschnittener Code verursacht eine Ausnahme "Unerkanntes Element". Wenn Sie also die gesamte Verbindungszeichenfolge übergeben, versucht sie dies als den Namen der Verbindungszeichenfolge zu finden, die nicht existiert. –

+0

Also, das erste Beispiel funktioniert, oder? Warum gehst du nicht einfach so? –

+2

Ich habe eine Gefühl Ausnahme ist nicht mit Ihrem Kontext verbunden und Sie beschädigt gerade Ihre app.config beim Entfernen der Verbindungszeichenfolge von dort. – Evk

Antwort

1

Sie brauchen nicht die Verbindungszeichenfolge in app.config, wenn Sie einen Schlüssel zu zuweisen, und es nicht verwenden und vorbei nur die Verbindungszeichenfolge in Konstruktor

Verwandte Themen