Linq to Entities - eager loading mit Include()

Habe ich dieses wirklich grundlegenden Tabellenstruktur:

dbo.tblCategory


dbo.tblQuestion (viele zu-eins-Beziehung zu tblCategory)


dbo.tblAnswer (viele zu-eins-Beziehung zu tblQuestion)

Also im Grunde, was ich versuche zu tun ist, wenn ich laden Sie eine Kategorie aus, ich will auch die Last, die alle Fragen und alle Antworten.

Nun habe ich in der Lage dies zu tun, verwenden Sie den folgenden code:

public tblCategory Retrieve(int id)
{
    using (var entities = Context)
    {
        var dto =
            (from t in entities.tblCategory.Include("tblQuestion")
                                           .Include("tblQuestion.tblAnswers")    
                 where t.Id == id
                 select t).FirstOrDefault();

            return entities.DetachObjectGraph(dto);
        }
    }
}

Allerdings bin ich nicht ganz verliebt mit dieser; wenn die Beziehung Namen ändern in meinem Modell; ich werde mich nicht um einen Fehler beim erstellen des Projekts. Idealerweise würde ich gerne einen lambda-Ausdruck; so etwas wie dieses:

public tblCategory Retrieve(int id)
{
    using (var entities = Context)
    {
        var dto =
            (from t in entities.tblCategory.Include(t => t.tblQuestion)
             where t.Id == id
             select t).FirstOrDefault();

        return entities.DetachObjectGraph(dto);
    }
}

Nun, mit dem obigen Schnipsel; ich bin stecken, wie drill-down, um die Antworten Tisch. Jede Idee, was ich verwenden könnte, für einen lambda-Ausdruck für diese ein?

  • Linq to Entities-in .NET 4.0 unterstützt lazy loading (standardmäßig aktiviert) soweit ich weiß. Sie müssen nicht die Mühe über dieses dann. =)
  • Vorausgesetzt, wir sind auf 4.0. Wir sind immer noch mit 3.5 für die Zeit =)
  • möglich, Duplikat der Entity Framework .Include() mit compile-Zeit-Prüfung?
InformationsquelleAutor Jim B | 2010-07-06
Schreibe einen Kommentar