• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Błąd "Object reference not set to an instance of an object" podczas tworzenia aplikacji w Blazor

Aruba Cloud - Virtual Private Server VPS
0 głosów
844 wizyt
pytanie zadane 28 lutego 2022 w C# przez Idezam Początkujący (410 p.)
edycja 1 marca 2022 przez Idezam

Hej.

Tworzę aplikację crudową w blazor, otrzymuję następujący błąd: 

Nie rozumiem w czym może leżeć problem, sam błąd wskazuje na linijkę 26 w pliku SuperHeroes, ale nie mam pomysłu o co może chodzić i jak to naprawić. 

 

1
komentarz 28 lutego 2022 przez adrian17 Mentor (352,580 p.)
Jak dobrze czytam, to `hero.Comic` jest nullem. Spójrz na JSONa zwracanego z API i zobacz czy nie ma tam nulli - jak nie ma, to wypisz sobie wszystkie Heroes i sprawdź czy mają Comic będący nullem.
komentarz 28 lutego 2022 przez Idezam Początkujący (410 p.)

Tak dokładnie, przy zwracanym JSONie z API Comic okazuje się być nullem. 

W jaki sposób mogę to naprawić? Bo z tego co wyczytałem, to ten problem pojawia się wtedy kiedy dosłownie do obiektu nie została przypisana wartość, choć teoretycznie powinien mieć tę wartość przypisaną zawsze. W innym miejscu wyczytałem że to problem z awaitami, przez co statyczne elementy ładują się zanim reszta jest załadowana, ale dalej nie przychodzi mi do głowy jak to rozwiązać.

komentarz 28 lutego 2022 przez PH03NIX Mądrala (6,130 p.)

choć teoretycznie powinien mieć tę wartość przypisaną zawsze.

Teoretycznie to on może "nie mieć wartości" albo mieć wartość zgodnie z tym co zostało zadeklarowane w modelu superbohatera

public Comic? Comic { get; set; }

Znak zapytania dosłownie wskazuje, że może być nullem + obiekty "z natury", a raczej odwołania do nich mogą być nullami, gdyż null oznacza odwołanie, które nie wskazuje na żaden obiekt.

komentarz 28 lutego 2022 przez Idezam Początkujący (410 p.)
Tak, źle się wyraziłem, źle też zadałem pytanie. Faktycznie program przez znak zapytania dopuszcza do sytuacji w której zmienna może być nullem. Ja chciałbym się dowiedzieć dlaczego ona jest tym nullem, dlaczego pole "comic" otrzymuje właśnie tę wartość null?
1
komentarz 28 lutego 2022 przez adrian17 Mentor (352,580 p.)

To zupełnie nie brzmi jak awaity, bardziej jak nie zrobienie czegoś na poziomie bazy danych lub konwersji do JSONa.

(zakładam że zweryfikowałeś że w samej bazie komiksy etc są poprawnie ustawione)

Na przykład (nie znam dobrze EF, kieruję się intuicją), w GetSingleHero masz:

_context.SuperHeroes.Include(h => h.Comic)

Ale w GetSuperHeroes tego Include nie ma - to może sprawić, że baza nie zrobi joina i wrzuci zwykłego nulla do obiektu.

komentarz 28 lutego 2022 przez Idezam Początkujący (410 p.)

Takk, o to chodziło! Bardzo dziękuję, faktycznie przeoczyłem konieczność wrzucenia Include. Jeszcze jedno mam małe pytanko, bo dodałem include i wszystko pięknie działa, tylko visual studio nadal pokazuje mi taki warning: 

Da się coś z tym zrobić? W sensie ja jestem świadomy tego że to jest nullable object, ale można się jakoś pozbyć tego ostrzeżenia?

komentarz 28 lutego 2022 przez PH03NIX Mądrala (6,130 p.)
Tak dokładnie w ef domyślnie włączony jest lazy loading i trzeba jawnie pokazać, że chcemy pobrać dodatkowe dane.

Dodanie include przed ToListAsync do drugiej metody powinno rozwiązać problem.
komentarz 28 lutego 2022 przez PH03NIX Mądrala (6,130 p.)

@Idezam, Inicjalizacja pustym obiektem pola Comic lub usunięcie ? z typu pola powinna rozwiązać problem. 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 528 wizyt
0 głosów
1 odpowiedź 790 wizyt
0 głosów
1 odpowiedź 248 wizyt
pytanie zadane 12 stycznia 2023 w C# przez Dzik1121 Nowicjusz (160 p.)

93,335 zapytań

142,330 odpowiedzi

322,416 komentarzy

62,669 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...