Widziałem wiele artykułów o tym, jak rozwiązać tę sprawę, wszystkie związane z CTP4 lub dodaniem własnych metod rozszerzających.
Czy istnieje „oficjalny” sposób użycia wyrażeń lambda w EF4 wewnątrz include (zarówno dla relacji pierwszego poziomu, jak i drugiego i wyższego poziomu), czy też ostatecznie nie został uwzględniony w RTM?
Jest jeden - z przyjemnością się dowiem, jak to zrobić, ponieważ użycie wyrażenia lambda w moim kodzie teraz (z # system.data.entity # system.data.linq) nadal daje mi:
Nie można przekonwertować wyrażenia lambda na typ „ciąg”, ponieważ nie jest to typ delegata w:
var customers = from c in
context.Customers.Include(c=>c.Phone)
c#
entity-framework-4
lambda
Dani
źródło
źródło
Odpowiedzi:
Wersja RTM Entity Framework 4.1 w rzeczywistości zawiera metody rozszerzające w
EntityFramework.dll
pliku, do szybkiego ładowania z lambdą za pośrednictwemInclude
funkcji. Po prostu dołącz bibliotekę DLL do swojego projektu i powinieneś być w stanie napisać kod taki jak:var princesses1 = context.Princesses.Include(p => p.Unicorns).ToList();
Pamiętaj, aby dodać instrukcję Import / Using w celu uwzględnienia przestrzeni nazw System.Data.Entity . W przeciwnym razie kompilator nie może znaleźć metod rozszerzających. Na przykład:
using System.Data.Entity;
Aby uzyskać więcej informacji, zobacz ten artykuł w blogu zespołu ADO.NET .
źródło
Chociaż jest to sugerowane w pytaniu, dla każdego, kto ma ten sam problem, w którym nie mogą używać lambd z. Uwzględnij, upewnij się, że masz to:
using System.Data.Entity;
źródło
Nie, w tej chwili nie ma oficjalnej obsługi Uwzględnij z wyrażeniem lambda w RTM. Używam tego .
Kiedy mówimy o CTP4, mamy na myśli funkcję Entity Framework. Jest nowszy niż EF4. Zawiera głównie Code First i kilka innych ulepszeń.
źródło