Aktualizowanie obiektu bazy danych

0

Witajcie,
Stoję przed takim problemem iż chcę zaktualizować obiekt utworzony w bazie danych.
Obiekt posiada dosyć dużo pól i tu jest taki problem iż.
-Gdy używam attach i przypisuję cały obiekt to pola, które nie zostały wprowadzone zostają zaktualizowane jako NULL, tego chcę uniknąć.
-Pól jest dosyć dużo i przypisywanie każdego zajmie trochę czasu. Do zrobienia w 10 min. ale jednak ilość wygenerowanego kodu chyba nie jest poprawna. Jestem pewny, że jest inny sposób.
Pozdrawiam!

0

Wklej kod. Attach o ile dobrze pamiętam służy do dołączenia encji "spoza" db contextu, ale to raczej nie ma znaczenia. Jeśli nie chcesz nulli to ustaw domyślne wartości po stronie bazy lub ORMa (w EF Core na pewno jest taka opcja we Fluent Api).

0
Krzysztof Pe napisał(a):

Wklej kod. Attach o ile dobrze pamiętam służy do dołączenia encji "spoza" db contextu, ale to raczej nie ma znaczenia. Jeśli nie chcesz nulli to ustaw domyślne wartości po stronie bazy lub ORMa (w EF Core na pewno jest taka opcja we Fluent Api).

Tak jest ale ja potrzebuję by te pola były nullable, Problem polega na tym, że podczas aktualizacji tych pól w bazie danych jeśli są już w nich jakieś wartości a w moim viewmodelu nie to niestety zostaną one zaktualizowane jako null.

0

Masz co najmniej kilka sposób żeby to zrobić. Po pierwsze nic nie stoi na przeszkodzie żeby pole było nullable i miało wartość domyślna. Możesz użyć automappera, aby konwertować wartości w swoich modelach ViewModel <=> db model. Natomiast w takim przypadku powinieneś mieć chyba dodatkową warstwę. Db Model - DTO model - ViewModel.

1
ApplicationDbContext _context;
MyTableModel row = _context.Mytable.First();
row.FirstName = "jacek";
_context.Mytable.Update(row);
_context.SaveChanges();
1

https://stackoverflow.com/questions/21592596/update-multiple-rows-in-entity-framework-from-a-list-of-ids

Edit, bo warto wspomnieć.
Musisz pamiętać, że używając _context.Update() zmieniasz dane lokalnie. Dopiero wywołując SaveChanges() zapisujesz wszystko do bazy danych

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