Połączenie z bazą i pushowanie

0

Cześć. Stawiam prostą apkę na projekt na studiach i mały problem pojawił się z pushowaniem danych do bazy. Chodzi o to, że przez formularz rejestracyjny rejestracja pzrebiega pomyślnie, ale dodało tylkol jeden rekord i z kazdą kolejna rejestracją nie dodaje kompletnie danych. Domyślam się, że problem leży gdzieś w UserID, ale nie wiem gdzie.. ;/

Klasa USER

public partial class User
    {
        [Required(ErrorMessage = "Proszę podać login")]
        [MinLength(5, ErrorMessage = "Login musi miec minimum 5 znaków")]
        public string UserName { get; set; }

        [Required(ErrorMessage = "Proszę podać hasło")]
        [MinLength(5, ErrorMessage = "Hasło musi miec minimum 5 znaków")]
        public string Password { get; set; }

        [Required(ErrorMessage = "Proszę podać swoje imię")]
        public string Name { get; set; }

        [Required(ErrorMessage = "Proszę podać swoje nazwisko")]
        public string LastName { get; set; }

        [Required(ErrorMessage ="Zaznacz miasto, w którym mieszkasz")]
        public string City { get; set; }

        [Required(ErrorMessage = "Zaznacz swój wiek")]
        public List<int> Age = new List<int>();

        public int UserId { get; set; }     
    }

Klasa EFDbContext dziedziczaca po DbContext

 public partial class EFDbContext : DbContext
    {    
    public DbSet<User> Users { get; set; }
    }

Kontroller obsługujący Post i Get

[HttpGet]
        public ActionResult Register(User user)
        {
            for(int i=1930; i<=DateTime.Now.Year;i++)
            {
                user.Age.Add(i);
            }
            return View(user);
        }


        [HttpPost]
        public ActionResult Register(User user, int i = 0)
        {
           

            using (EFDbContext context = new EFDbContext())
            {
                context.Users.Add(user);
                context.SaveChanges();
            }

                return View("Thanks", user);
          
        }

Oczywiście asp.net MVC a baza na frameworku entity. Ktoś wie gdzie robie błąd? :) Baza danych jest dobrze skonfigurowana, a parametr UserID ustawiony jest jako Identity.
Proszę uprzejmie o pomoc!

1

Sprawdź sobie ModelState, może nie przepuszcza, bo nie spełniasz wymogów jakie podałeś

if(ModelState.IsValid)
{
 using (EFDbContext context = new EFDbContext())
 {
     context.Users.Add(user);
     context.SaveChanges();
 }
}
else
{
   var errors = ModelState.Select(x => x.Value.Errors)
                           .Where(y=>y.Count>0)
                           .ToList();
}
0

Po robocie. Szczerze nie zrobiłem nic, a jedynie odświeżyłem całą bazę danych i dane się pojawily. Ponadto usunąłem Listę z wiekiem, ponieważ nie zapisywało mi się to do bazy, kompletnie tak jakbym nie wybierał żadnej opcji (Required też nie działało). Może na przyszłość się komuś przyda :)

A poza tym jak już założyłem temat.. Jaki macie sposób na wklepywanie daty urodzenia jak piszecie swoje apki tak, żeby bezproblemowo zapisywały się do bazy? Podzieli sie ktoś tajemniczą wiedzą? :)

1

No właśnie miałem pytać o co chodzi z tymi datami twoimi. Wrzuć sobie na stronę jakiś datepicker (jQuery, Bootstrap, MaterializeCSS) i sprawa załatwiona. Pobaw się formatem daty, jeśli będzie to konieczne i powinno wszystko działać. I nie List<int> tylko DateTime ;)

0

Dobrze, problem rozwiązany, pushuje do bazy danych dane z formularza (jest pare rzeczy do dopieszczenia ale to są łatwe sprawy). Sprawa wygląda teraz tak: Apka ma działać na zasadzie instagrama. Kazdy użytkownik może mieć swoich "followersów". Użytkownik będzie sie logował, po czym będzie mógł przejść do swojego profilu i dodać fotkę. Do kazdej fotki będą komentarze.

Teraz pytanie moje jest następujące: jak mocno skomplikowane będą działania, aby wykonać ten projekt? Wiadomo, że aby zrealizować samą opcje dodawania zdjęć będą potrzebne 4 tabele:
Użytkownik (wszystkie dane usera), Tabela "Images" (w której będą VarBinary), tabela "Komentarze" (w której będzie ID zdjęcia, ID komentarza i nvar komentarza) i na samym końcu tabela asocjacyjna UserToImage(w której będzie tylko ID usera i ID zdjęcia). Dobrze myślę, że to tak powiniene zaprojektować bazę?
Jakieś porady na temat wykonywania tego projektu? Co o tym myślicie?

0

Projekt zależny jest od twojej wiedzy, im bardziej sobie to skomplikujesz tym bardziej z czasem stanie się to nudne jeśli dopiero się uczysz. Co do zdjęć to zależy czy użytkownik ma jedno zdjęcie, kilka zdjęć i czy to samo zdjęcie może być przypisane do innego użytkownika. W komentarzu potrzebujesz jeszcze ID user który to skomentował, no chyba, że komentowanie jest anonimowe. Skoro robisz coś na wzór instagrama to do followersów też potrzebujesz tabele, kto kogo śledzi.

0

@AdamWox - wiedze jako taką mam na temat baz danych, odnośnie Asp.net uczę się i chcę się nauczyć jak najwięcej - jednocześnie przerabiam książkę Freemana ASP.NET MVC 5 i zawarte w niej przykłady oraz apkę którą opisuję u góry. Różnica jest taka, że apka w książce bazuej na jednej tabeli w lokalnej bazie danych, ja zaś będę miał troszkę bardziej rozbudowaną bazę danych. Im bardziej sobie to skomplikuję, tym dłużej będę nad tym siedział - ot cały problem ;) a nie chcę sobie też dowalic na początku aplikacji, którą będę musiał walić dzień w dzień przez miesiąc ;)

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