Entity Framework 5: Usando carregamento lento ou carregamento ansioso

Me desculpe se minha pergunta é normal. Mas encontro esse problema ao criar meu aplicativo ASP.NET MVC 4.0 usando o Entity Framework 5.

Se eu escolher Eager Loading, simplificarei usando:

public Problem getProblemById(int id) {
 using(DBEntity ctx = new DBEntity ())
            {
                return (Problem) ctx.Posts.Find(id);
            }
}

Mas se eu usar o Eager Loading, encontrarei um problema: quando quiser navegar por todos os seus atributos, como comentários (do problema), Usuário (do problema) ... devo usar manualmenteInclude para incluir essas propriedades. e Às vezes, se eu não usar essas propriedades, perderei o desempenho e talvez tenha perdido a força do Entity Framework.

Se eu usar o Lazy Loading. Existem duas maneiras de usarDBContext objeto. A primeira maneira é usar o objeto DBContext localmente:

public Problem getProblemById(int id) {
 DBEntity ctx = new DBEntity ();
 return (Problem) ctx.Posts.Find(id);
}

Usando isso, acho que encontrará vazamento de memória, porque o ctx nunca mais será descartado.

A segunda maneira é tornar o objeto DBContext estático e usá-lo globalmente:

static DBEntity ctx = new DBEntity ();
public Problem getProblemById(int id) {
 return (Problem) ctx.Posts.Find(id);
}

Eu li alguns blogs, eles dizem que, se eu usar dessa maneira, devo controlar o acesso de simultaneidade (porque a solicitação múltipla envia para o servidor) sozinha, OMG. Por exemplo, este link:

Uso do DBContext do Entity Framework

Então, como é possível projetar meu aplicativo, ajude-me a descobrir.

Obrigado :)

questionAnswers(1)

yourAnswerToTheQuestion