Einstellung ConnectionTimeout bei der Verwendung von Entity Framework
Ich würde gerne die ConnectionTimeout auf etwas anderes als den Standardwert beträgt 15 Sekunden. Ich geerbt habe einige code, der verwendet Entity Framework und der app.config sieht wie folgt aus:
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS; Integrated Security=True; ConnectionTimeout=30; MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=.\SQLEXPRESS; Integrated Security=True; ConnectionTimeout=30; MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
Ich bin derjenige, fügte der sectino in einem Versuch, um die Dinge zu arbeiten. Ich kann sagen, es funktioniert nicht setzen Sie einen Haltepunkt in:
var adapter = (IObjectContextAdapter) this;
var objectContext = adapter.ObjectContext;
objectContext.CommandTimeout = CommandTimeoutSeconds;
int test = objectContext.Connection.ConnectionTimeout;
test ist immer 15. Was ist Los? Kann mir jemand sagen, wie man einstellen ConnectionTimeout? Ich habe versucht, sowohl die "ConnectionTimeout" und "Connection Timeout", I. e. kein Raum vs. Raum.
Kann mir jemand helfen? Ich ziehe mir die Haare aus. Ich bin sicher, dass es eine einfache Lösung!
Dave
Zusätzliche info. Antwort auf Kommentar, hier ist mein DbContext abgeleitete Klasse...
public class SessionDataContext : DbContext
{
//Command timeout (seconds)
private const int CommandTimeoutSeconds = 30;
///<summary>
///Constructor that takes db name.
///The connection string and db itself is configured in the this project's app.config file
///</summary>
///<param name="dbName"></param>
public SessionDataContext(string dbName) : base(dbName)
{
Database.SetInitializer(new SessionDataContextInitializer());
//Set timeout (based on code from http://stackoverflow.com/questions/6232633/entity-framework-timeouts)
var adapter = (IObjectContextAdapter) this;
var objectContext = adapter.ObjectContext;
objectContext.CommandTimeout = CommandTimeoutSeconds;
int test = objectContext.Connection.ConnectionTimeout;
}
///<summary>
///Session table's records
///</summary>
public DbSet<Session> Sessions { get; set; }
///<summary>
///SessionType table's records
///</summary>
public DbSet<SessionType> SessionTypes { get; set; }
}
- wie erstellen Sie Ihre DbContext abgeleitete Klasse? Sie übergeben den Namen der Verbindungszeichenfolge gibt es?
- Hallo Pawel, ich habe die DbContext-drived-Klasse in Frage. Dank für das betrachten meiner Frage.
- Haben Sie einen Blick auf stackoverflow.com/questions/6232633/entity-framework-timeouts ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
War es Dummheit auf meiner Seite, dass war das problem verursacht! Ich setze meine Antwort hier, falls jemand in Zukunft dieses problem hat. Alles, was ich tippte oben ist korrekt und funktioniert gut. Jedoch, die app.config-Datei, die ich suchte, war eine Klasse Bibliothek (unsere DataAccess-layer). In der Tat, es wurde nicht benutzt und Standard-EntityFramework-Einstellungen, die verwendet wurden. Ich bin mot sicher, was führte mich, es zu versuchen, aber ich zog die app.config-Einstellungen von der DataAccess-layer app.config, um die Haupt-app.config und alles funktionierte wunderbar. Alles, was ich sagen kann zu meiner Verteidigung andere, als ich erbte den code ist, dass es nicht klar für mich zu sehen, dass die Werte in der app.config nicht verwendet werden und man nicht anrufen, oder Sie nutzen Sie im eigenen code. Vielmehr MultipleActiveResultSets und ConnectionTimeout sind von den zugrunde liegenden Entity Framework.