ASP.Net Entity Framework, Objektkontextfehler
Ich erstelle eine 4-lagige ASP.Net-Webanwendung. Die Schichten sind:
Data LayerEntity LayerBusiness LayerUI LayerDie Entity-Ebene verfügt über meine Datenmodellklassen und wird mithilfe von T4-Vorlagen (POCO) aus meinem Entity-Datenmodell (EDMX-Datei) in der Datenebene erstellt. Der Entity-Layer wird in allen anderen Layern referenziert.
Meine Datenschicht hat eine Klasse namens SourceKeyRepository, die eine Funktion wie folgt hat:
public IEnumerable<SourceKey> Get(SourceKey sk)
{
using (dmc = new DataModelContainer())
{
var query = from SourceKey in dmc.SourceKeys
select SourceKey;
if (sk.sourceKey1 != null)
{
query = from SourceKey in query
where SourceKey.sourceKey1 == sk.sourceKey1
select SourceKey;
}
return query;
}
}
Lazy loading ist deaktiviert, da meine Abfragen nicht in anderen Ebenen dieser Anwendung ausgeführt werden sollen. Beim Versuch, auf die Informationen in der Benutzeroberflächenebene zuzugreifen, wird die folgende Fehlermeldung angezeigt:
Die ObjectContext-Instanz wurde freigegeben und kann nicht mehr für Vorgänge verwendet werden, die eine Verbindung erfordern.
Ich bin sicher, das liegt daran, dass mein DataModelContainer "dmc" entsorgt wurde. Wie kann ich dieses IEnumerable-Objekt von meiner Datenschicht zurückgeben, sodass es nicht vom ObjectContext, sondern nur vom DataModel abhängt?
Gibt es eine Möglichkeit, das verzögerte Laden so zu beschränken, dass es nur in der Datenschicht auftritt?