.NET i update obiektów w bazie danych

0

Hej.
Mam do Was pytanie. Czy da się zrobić update obiektu w bazie danych? Chciałem zrobić coś takiego, że operuje na obiektach bazy danych, ale chciałbym zrobić coś takiego, że całą bazę zapisuję do kolekcji, działam sobie coś na niej i później wgrywam z kolekcji do bazy? Chodzi mi o to by "prowizorycznie" zrobić operację update ale na całej tabeli na raz. Czy jest to możliwe?

0

No generalnie na tym opiera się pewnie z 90% aplikacji webowych napisanych w .NET

EntityFramework / Dapper / nHibernate / ADO.NET /

0

Jest na to jakaś wbudowana funkcja albo jakiś schemat? przyznam szczerze że interesuje mnie update całej tabeli a nie pojedynczego elementu, dlatego chcialbym to robic hurtowo. Może mi ktoś coś poradzić?

0

Napisz coś więcej o Twoim zagadnieniu bo to wygląda jakbyś rozwiązywać jakiś problem w dziwny sposób.
EntityFramework EF domyślnie śledzi zmiany w aktywnej sesji I. Jak coś odbierzesz z bazy i pozmieniasz to na koniec SaveChanges zapisze wszystkie zmiany ale to jest nieco dziwne podejście. Zobacz przykłady z EF.

0

Zależy jak bardzo hurtowo.

Jeżeli są to tysiące obiektów, to jak dobrze pamiętam - SqlBulkCopy

Ewentualnie możesz używać też czystego sqla w tym c#.

0
Eryk17 napisał(a):

Czy da się zrobić update obiektu w bazie danych? [...] Czy jest to możliwe?

Tak, da się

0

Zależy jak rozumieć "obiekt w bazie danych". Według nomenklatury Microsoftu, tabela jest obiektem, ale tabel nie można updatować, jedynie alterować.
Jeśli zaś chodzi o update, to najprościej chyba skorzystać z pierwszych wyników z Google, np.: https://www.aspsnippets.com/Articles/ExecuteNonQuery-Insert-Update-and-Delete-examples-in-C-and-VBNet.aspx

0

Mam na myśli przypadek w którym Tworzę prostą klasę np. samochód metodą First Code, następnie dodaje kontroler z akcjami Entity Framework który daje mi CRUD dla danej klasy i tworzę obiekty. Następnie zapisuje te obiekty jako kopie np. w kolekcji albo liście a potem podmieniam je do oryginalnej tabeli gdyby te z oryginalnej się zmieniły. Elementów nie powinno być więcej niż kilkadziesiąt.

@Edit: nie wyjaśniłem po co - chciałem zrobić tzw ustawienia użytkownika, czyli klasę która zawiera jakieś ustawienia. Pod wpływem czasu te ustawenia mogą zmieniać inni użytkownicy, a w razie potrzeby, właśnie z takiej listy/kolekcji chciałbym przywrócć do bazy. Chciałbym zrobić aplikacje czysto webową, ale chciałbym podkreślić - nikt, po za jednym użytkownikiem nie miałby w danym momencie możliwści ingerencji w bazie. Czyli to pozwoliłoby bezkolizyjnie "podmienić" dane. Mógłby mi ktoś to jakoś wytłumaczyć albo czego użyć?

0

Te wzorcowe ustawienia też musisz gdzieś przechowywać więc może osobna tabela z ustawieniami wzorcowych dla liderów. Potem update na poziomie bazy danych.

0

No, ale to jeden user będzie miał jeden rekord ustawień w tej tabeli, a nie kilkadziesiąt. Przynajmniej jeśli ma to mieć sens i nie chcesz komplikować sobie życia.

0

Już wyjaśniam. Załóżmy że mam tabele Ustawienia np.

public Class Ustawienia
int ustawienie1{get;set;}
int utawienie 2{get;set;
....

Następnie mam klasę UstawieniaUzytkownika np

public Class UstawieniaUzytkownika
public string nazwaUstawien{get;set;}
public virtual List<Ustawienia> ustawienia {get;set;}

Chodzi o to, że skoro mam w tabeli "Ustawienia" pewne ustawienia danego uzytkownika, to żebym mógł utworzyć obiekt klasy UstawieniaUzytkownika i do listy "ustawinia" zapisac aktualny stan tabeli "Ustawienia". Następnie kiedykolwiek chciałbym mieć możliwość przywrócenia do bazy stanu który został zapisany w którejkolwiek liście. Główne założenie jest takie, że w liście przechowywałbym obiekty klasy Ustawienia i chciałbym je kiedykolwiek chce z tej listy przywrócić do tabeli głównej czyli wstawić do tabeli "Ustawienia" zawartosc listy z obiektu "UstawieniaUzytkownika"

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