2013-12-17 12 views
12

To Entity Framework:Marzą ładowanie z ormlite servicestack

var department = _context.Departments 
       .Include(dep => dep.Employees.Select(emp => emp.ContactTypes)) 
       .SingleOrDefault(d => d.Id == departmentId); 

Tutaj spodziewam jeden dział zostać zwrócone zawierający wszystkie związane pracowników i wszystkie typy kontaktu dla każdego pracownika.

To ormlite servicestack:

nie mam pojęcia. Kiedy patrzę na Docu/próbek: https://github.com/ServiceStack/ServiceStack.OrmLite

Piszą:

Teraz wsparcie Expression może zaspokoić najbardziej prostych zapytań z silną wpisany API. W przypadku wszystkich bardziej złożonych (na przykład zapytań z połączeniami tabel) nadal można łatwo wrócić do surowych zapytań SQL, jak widać poniżej.

Widziałem, że istnieje klasa JoinSqlBuilder, ale nie sądzę, że może ona zwrócić zagnieżdżone kolekcje.

Może to, czego chcę, nie jest możliwe, ale może uda mi się osiągnąć kompromis, np. Zatrudnić wszystkich pracowników działu departamentu. Następnie zapominam o pracownikach i pobieraję wszystkie typy kontaktów dla określonego EmployerId. Tworzenie hierarchii i przypisywanie list nadal byłoby moją pracą.

Ale mam nadzieję, że istnieje krótsze rozwiązanie.

Co by było dobrze, gdyby zapytanie wyglądało jak zwrócenie obiektu (Dynamiczny?) Z trzema płaskimi właściwościami: Dział, Pracownicy, Typy kontaktów i przypisz właściwości thoe do mojego DTO.

+1

@Voters Wszyscy powinniście odwiedzić: http://servicestack.uservoice.com/forums/176786-feature-requests/suggestions/4459040-enhance-ormlite-with-common-data-usage-patterns i głosować tam z twoimi maksymalnie 3 głosami, niż możemy przekroczyć najwyższą prośbę o funkcję !!! – Pascal

+0

@Voters Cool niektórzy faceci już głosowali: p – Pascal

+0

Jeśli sprawdzisz kod teraz mają Load Reference i Save Reference, nigdy go nie używam, ponieważ jest to funkcja dla wersji 4 – kirie

Odpowiedz

0

Ok, proszę nie brać tego jako ostateczną odpowiedź, ale tylko moje zdanie na temat sytuacji (nie używam stosu obsługa bardzo dużo), jednakże ...

Kiedy po raz pierwszy zaczął używać EF wiele lat temu natknąłem się na podobną sytuację, w której odniesienia się nie ładowały. Podobnie jak ty miałem do czynienia z prawdopodobną maską konieczności wyliczenia poszczególnych kolekcji osobiście i napisania wielu dodatkowych kodów dla operacji, z którymi ORM powinien poradzić sobie z łatwością.

W rezultacie otrzymałem funkcję automatycznego mapowania, które zasadniczo redukuje wszystkie pętle multilinii, które miałem wszędzie do pojedynczego polecenia odwzorowania linii.

Muszę jeszcze zrobić jedno oświadczenie odwzorowujące dla każdej powiązanej nieruchomości, ale to zmniejszyło kod, który musiałem napisać, a co ważniejsze, sprawiło, że działałem, dopóki EF się nie poprawił, lub znalazłem lepszy sposób robienia rzeczy .

Pozwolę sobie podkreślić, nie proponuję tego jako odpowiedzi, i to jest trochę za duży komentarz, po prostu sugeruję przesunięcie twojej myśli w innym kierunku, co może pomóc w znalezieniu lepszego rozwiązania na powierzchnię .