MVC jak zwrócić więcej informacji z modelu (i jego relacjami)

0

Ehh, ciężko mi wytłumaczyć w jednym zdaniu - otóż próbuje się przekonać do MVC i póki co jest fajnie, ale w połączeniu z modelami i relacjami w bazie danych - nastąpiło więcej problemów - otóż nie rozumiem, w sytuacji niżej - czy mam dodać więcej modelów do View i gdzieś w Controllerze, czy gdzie?
Sytuacja wygląda tak, mam Foreign Key to gatunku gier, i wydawców w modelu Game. Nie wiem jak to przekazać, żeby wyświetliło mi nazwę (wiem jak znalaźć to w bazie itd.) ale nie wiem w którym miejscu i jak. Obrazowo to wygląda tak!
screenshot-20210318162008.png

1

No, ale widzę, że masz wszystko w modelu. GenreId i Genre. Wygląda to jakbyś używał EfCore i jeśli tak jest i zrobiłeś wszystko poprawnie przy migracji, to powinieneś mieć wypełnione zarówno GenreId jak i Genre, a tedy w RazorView wszystko jest proste:

@model IEnumerable<Game>

foreach(var game in Model)
{
    <td>game.Genre.Name</td>
}

Jeśli nie masz wypełnionego Genre i/lub GenreId to znaczy, że coś zrobiłeś źle przy tworzeniu migracji albo masz tak w bazie danych.

1

Tak się da, ale to nie jest najlepsze rozwiązanie z punktu widzenia wydajności oraz utrzymania kodu.

Powinieneś mieć oddzielne viewmodele, które zwracasz z akcji kontrolerów zamiast pchania klas ORMa na GUI.

0

Faktycznie, chyba działa. Chyba, bo coś źle zmapowałem, bo zwraca mi NULL.
Używałem konwencjonalnej metody, bez Fluent API i tak to wygląda u mnie:
screenshot-20210318170413.png
screenshot-20210318170422.png
W bazie mam wszystko dobrze. tzn chyba. Tu macie zdj.
screenshot-20210318171656.png

Example.Models.Game.Genre.get returned null.

jakby ktoś mógł zerknąć, bo nie mogę znaleźć

0

Udało się! Brakowało .Include w kontrolerze!
Dzięki za odpowiedzi, dzięki nim szybko doszedłem do rozwiązania!
screenshot-20210318174347.png

1

Brakowało .Include w kontrolerze!

tu trzeba płakać :P

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