ASP.Net Entity Framework, Objektkontextfehler

Ich erstelle eine 4-lagige ASP.Net-Webanwendung. Die Schichten sind:

Data LayerEntity LayerBusiness LayerUI Layer

Die 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?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage