Linq i EF - do czego służy Include()?

Linq i EF - do czego służy Include()?
GO
  • Rejestracja: dni
  • Ostatnio: dni
0

Czytam o Include w dokumentacji i wciaz nie łapie kiedy i jak używać.
Czy Include() w **MethodSyntax **to jest odpowiednik **join **z QuerySyntax?

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5226
2

Nie wiem co robi join z query syntax, ale Include będzie zaciągać określone relacje.

np. Person ma property Phone, to bez Includa Phone będzie nullem, bo nie wczytałeś go z bazy.

https://docs.microsoft.com/en-US/ef/core/querying/related-data

Kopiuj
using (var context = new BloggingContext())
{
    var blogs = context.Blogs
        .Include(blog => blog.Posts)
        .Include(blog => blog.Owner)
        .ToList();
}

Bez includów nie pobrałbyś postów, które są na tym blogu oraz informacji o właścicielu.

JP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1065
2

To co napisał @WeiXiao przy założeniu że masz wyłącznie lazy loading. Include wymusza eager loading czyli załadowanie z bazy zkazanych w include encji.
Używać wtedy gdy masz wyloączone lazy loading A chcesz pobrać od razu rekord rodzica z jakimiś dziećmi.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
3
goodfather napisał(a):

Czy Include() w **MethodSyntax **to jest odpowiednik **join **z QuerySyntax?

Odpowiednikiem join jest metoda nazwana pewnie dla zmyłki Join.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.