Estrutura de entidade do ASP.Net, erro de contexto do objeto

Estou criando um aplicativo ASP.Net em quatro camadas. As camadas são:

Camada de dadosCamada de entidadeCamada de negóciosCamada da interface do usuário

A camada de entidade possui minhas classes de modelo de dados e é criada a partir de meu modelo de dados de entidade (arquivo edmx) na camada de dados usando modelos T4 (POCO). A camada de entidade é referenciada em todas as outras camadas.

Minha camada de dados tem uma classe chamada SourceKeyRepository, que tem uma função assim:

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

O carregamento lento está desabilitado, pois não quero que minhas consultas sejam executadas em outras camadas deste aplicativo. Estou recebendo o seguinte erro ao tentar acessar as informações na camada da interface do usuário:

A instância ObjectContext foi descartada e não pode mais ser usada para operações que requerem uma conexão.

Tenho certeza de que isso ocorre porque meu DataModelContainer "dmc" foi descartado. Como posso retornar esse objeto IEnumerable da minha camada de dados para que não dependa do ObjectContext, mas apenas do DataModel?

Existe uma maneira de limitar o carregamento lento para ocorrer apenas na camada de dados?

questionAnswers(4)

yourAnswerToTheQuestion