Kontext des Entity Framework-Objekts im ASP.NET-Sitzungsobjekt?
Wir haben eine mehrschichtige Asp.NET Web Forms-Anwendung. Die Datenschicht hat eine Klasse namensDataAccess
welche impementsIDisposable
und hat eine Instanz unseres Entity Framework-Objektkontexts als privates Feld. Die Klasse verfügt über eine Reihe öffentlicher Methoden, die verschiedene Sammlungen von Entitäten zurückgeben, und gibt den Objektkontext frei, wenn er freigegeben wird.
Aufgrund einer Reihe von Problemen, mit denen wir konfrontiert waren, haben wir beschlossen, dass es ein großes Plus wäre, den Objektkontext (oder eine Instanz von) beizubehaltenDataAccess
) im Umfang länger auf dem Server. Es wurde vorgeschlagen, eine Instanz in der zu behaltenHttpContext.Current.Items
Sammlung vondieser Beitrag um eine Instanz pro HTTP-Anforderung zu haben.
Ich frage mich: Welche Probleme / Bedenken / Probleme würden beim Speichern einer Instanz unseres Objektkontexts in der auftreten?HttpContext.Current.Session
Objekt????
Dies lässt sich relativ schnell implementieren und hat keine Auswirkungen auf unsere zahlreichen vorhandenen Komponententests.
Wir werden AutoFac und eine ServiceProvider-Klasse verwenden, um Instanzen bereitzustellen. Wenn eine Instanz des ObjectContext erforderlich ist, wird dieser durch einen Code wie den folgenden zurückgegeben:
private static Entities GetEntities(IContext context)
{
if (HttpContext.Current == null)
{
return new Entities();
}
if (HttpContext.Current.Session[entitiesKeyString] == null)
{
HttpContext.Current.Session[entitiesKeyString] = new Entities();
}
return (Entities)HttpContext.Current.Session[entitiesKeyString];
}
Prost.