Dlaczego leniwe ładowanie nie działa?

0

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?

  1. 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

1

Jeśli to jest EF Core to musisz w konfiguracji wywołać metodę UseLazyLoadingProxies albo użyć LazyLoadera w definicji konkretnego typu

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