EF pobranie danych z wszystkich tabel.

0

Witam, nie potrafię pobrać danych z wszystkich tabel za pomoca linq. Na przykład tabela Klienci posiada relacje jeden do wielu do DaneKlienta, Adres, Telefon.

var klienci = MojKontext.Klienci.ToList();

Tutaj wlasnie pobieram wszystkich klientów, ale w pozostałych mam "count 0". Gdy zrobie to w taki sposob:

var klienci = from result in context.Klienci
                                join meta in context.DaneKlienta
                                on Klienci.CustomerId equals meta.CustomerId

                                select new
                                {
                                    Klienci = result,
                                    DaneKlienta = meta,
                                };

To oczywiście wszystko jest jak należy.
Podobny problem jest przy wywołaniu funkcji

var xxx = context.Klienci.SqlQuery("use MojaBazaX select * from dbo.ProstaFunkcja()").ToList();

Ta funkcja to nic innego jak proste zapytanie z inner joinem, ale podobnie jak poprzednio, kolekcja xxx zawiera jedynie tabele Klienci.

1
var klienci = MojKontext.Klienci.Include(d=>d.DaneKlienta).ToList();
0
szydlak napisał(a):
var klienci = MojKontext.Klienci.Include(d=>d.DaneKlienta).ToList();
  1. Include nie przyjmuje delegatu
  2. Chodzilo mi o lazy loading
2

Przyjmuje tylko dodaj przestrzeń. Jak wpiszesz Include(d=>d.DaneKlienta) i po najechaniu kursorem ctrl + . i Ci znajdzie

Żeby loazy loading działało to property nawigacyjne musi być virtual
http://www.entityframeworktutorial.net/lazyloading-in-entity-framework.aspx

0

Z nieznanych mi względów Inteli nie podpowiadał mi System.Data.Entity. Musiałem dodać ręcznie. Oczywiście lazy również teraz działa.
Dzięki za pomoc!

1 użytkowników online, w tym zalogowanych: 0, gości: 1