ASP.Net Entity Framework, error de contexto de objeto

Estoy creando una aplicación web ASP.Net de 4 capas. Las capas son:

Capa de datosCapa de entidadCapa de negociosCapa de IU

La capa de entidad tiene mis clases de modelo de datos y está construida a partir de mi modelo de datos de entidad (archivo edmx) en la capa de datos usando plantillas T4 (POCO). Se hace referencia a la capa de entidad en todas las demás capas.

Mi capa de datos tiene una clase llamada SourceKeyRepository que tiene una función como esta:

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;
    }
}

La carga diferida está deshabilitada ya que no quiero que mis consultas se ejecuten en otras capas de esta aplicación. Recibo el siguiente error cuando intento acceder a la información en la capa de IU:

La instancia de ObjectContext se ha eliminado y ya no se puede usar para operaciones que requieren una conexión.

Estoy seguro de que esto se debe a que mi DataModelContainer "dmc" fue eliminado. ¿Cómo puedo devolver este objeto IEnumerable desde mi capa de datos para que no dependa del ObjectContext, sino únicamente del DataModel?

¿Hay alguna forma de limitar la carga diferida para que solo ocurra en la capa de datos?

Respuestas a la pregunta(4)

Su respuesta a la pregunta