Ich habe viele Artikel darüber gesehen, wie man diese Angelegenheit überwinden kann, die sich alle auf CTP4 beziehen oder meine eigenen Erweiterungsmethoden hinzufügen.
Gibt es eine "offizielle" EF4-Methode zur Verwendung von Lambda-Ausdrücken in include (sowohl für Beziehungen der ersten Ebene als auch für Beziehungen der zweiten und höheren Ebene) oder wurde sie schließlich nicht in das RTM aufgenommen?
Es gibt eine - ich würde mich freuen zu lernen, wie es geht, da die Verwendung des Lambda-Ausdrucks in meinem Code jetzt (mit # system.data.entity # system.data.linq) mir immer noch Folgendes gibt:
Der Lambda-Ausdruck kann nicht in den Typ 'string' konvertiert werden, da es sich nicht um einen Delegattyp handelt für:
var customers = from c in
context.Customers.Include(c=>c.Phone)
c#
entity-framework-4
lambda
Dani
quelle
quelle
Antworten:
Die RTM-Version von Entity Framework 4.1 enthält tatsächlich Erweiterungsmethoden in der
EntityFramework.dll
Datei, um das Laden mit Lambda über dieInclude
Funktion zu beschleunigen . Fügen Sie einfach die DLL in Ihr Projekt ein und Sie sollten in der Lage sein, Code wie folgt zu schreiben:Denken Sie daran, eine Import / Using-Anweisung hinzuzufügen, die den System.Data.Entity- Namespace enthält. Andernfalls kann der Compiler die Erweiterungsmethoden nicht finden. Z.B:
Weitere Informationen finden Sie in diesem Blog- Artikel zum ADO.NET-Team .
quelle
Obwohl dies in der Frage impliziert ist, stellen Sie für alle anderen Personen, die das gleiche Problem haben, bei denen sie keine Lambdas mit .Include verwenden können, Folgendes sicher:
quelle
Nein, es gibt derzeit keine offizielle Unterstützung für Include with Lambda Expression in RTM. Ich benutze das .
Wenn wir über CTP4 sprechen, meinen wir Entity Framework Feature. Es ist eine neuere API als EF4. Es enthält hauptsächlich Code First und einige andere Verbesserungen.
quelle