Wpis z mikrobloga

#csharp #dotnet #webapi #mvc #programowanie #visualstudio

Zaczynam naukę C#, dokładnie staram się stworzyć api w dotNecie do aplikacji mobilnych. W związku z tym mam kilka pytań.

1. Mój projekt utowrzyłem na podstawie tego tutoriala

Zaczałem tworzyć bazę danych metodą "Code First" (czyli tworzę Model i Visual Studio tworzy na jego podstawie bazę). Oto interesujący nas model.

W czym problem? W mojej bazie będę zapisywał linki do stron. Jedną z wartości którą chcę zapisać są tagi. W modelu który utworzyłem, zmienna "tags" jest tablicą stringów.

public string[] tags { get; set; }


Problem w tym, że nie ma tego w bazie. Dane dodałem w ten sposób., a baza danych zwraca to.. Dlaczego jest null?

2. W jednym z Controllerów mam funkcję odpowiadającą za obłsugę zapytania typu PUT [link do kodu]

Interesuje mnie trzecia linijka. Funkcja wymaga tam 2 wartości (te w nawiasach): id i user. O ile "id" prawdopodobnie bierze się z adresu, który podaje klient w zapytaniu do serwera, o tyle nie bardzo wiem skąd się bierze zmienna "user". Zostało to wygenerowane automatycznie, a komentarzy zero :/

3. Znacie jakieś lepsze tutoriale do WebAPI? Bo ten co podałem w pierwszym punkcie jest dość kiepski, bo niewiele rzeczy jest tam wytłumaczonych.
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Pietrek558: Poczytaj lepiej sobie dokładniej o ASP.NET MVC. Jeśli dasz, że tags jest wymagany, to najpewniej nie będzie zwracać Ci wartości null. Popróbuj.
  • Odpowiedz
@Pietrek558: Pytanie, jak kolekcja stringów miałaby być zapisana w bazie? Stwórz do tego model Tag z Id i TagName, i utwórz pole public virtual ICollection tags {get; set;}. Zostanie utworzona tabela tagi z relacją do SavedSites, a dzięki wirtualności pola będzie działał Lazy Loading..

Co do pkt 2, prawdopodobnie przekazywany jest tam aktualnie zalogowany użytkownik przy autentykacji.
  • Odpowiedz
@Pietrek558: ICollection to interfejs, dzięki temu określasz że potrzebujesz aby model miał jakiś rodzaj pola będącego dowolną kolekcja implementującą ten interfejs. Dzięki czemu nie jesteś zależny od implementacji, i tak w kontrolerach czy ogólnie w aplikacji możesz posługiwać się interfejsem, a tam używać już zarówno list jak i tablic, zależnie od potrzeb i chęci. Gwarancji nie dam, ale wydaje mi się, że istnieje konieczność posługiwania się interfejsem aby była możliwość
  • Odpowiedz