Hej,
Uczę się właśnie korzystania z EF.
Mam encję AccommodationCategory
public class AccommodationCategory
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public ICollection<Resource> Resources { get; set; }
public virtual ICollection<AccommodationInfrastructure> AccommodationInfrastructures { get; set; }
}
Posiada ona kolekcję AccommodationInfrastructures
którą chciałbym, aby EF załadował, jak będzie potrzeba (odwołam się do tego pola).
W celach testu napisałem takie instrukcje:
AccommodationCategory category = _context.AccommodationCategories.FirstOrDefault();
AccommodationInfrastructure infrastructure = category.AccommodationInfrastructures.Where(w => w.Name == "Value").FirstOrDefault();
Niestety, kolekcja AccommodationInfrastructures
jest w tym przypadku nullem, bo nie zaciągnęło z bazy danych, i wyrzuca NullPointerException.
Dlaczego mi to nie działa? Potrzebujecie jeszcze jakiegoś kodu aby zdiagnozować problem?
- Kolejne pytanie mam do samego LazyLoadingu. W jaki sposób podejść do problemu ładowania
AccommodationInfrastructures
spełniające dany warunek dla każdej kategorii? Dodam, że będzie duża ilość tych obiektów dla kategorii, więc raczej nie można pobrać wszystkich. W tym wypadku lepsze będzie Lazy czy Eager?
Moim zdaniem lepiej Lazy, gdyż można zrobić po prostu tak? A całe filtrowanie będzie po stronie bazy danych?
List<AccommodationInfrastructure> infrastructures = category.AccommodationInfrastructures.Where(w => w.Name == "Value").ToList();
Dzięki i pozdrawiam