Jaka jest różnica między SaveOrUpdate a Save/Update in NHibernate. Dlaczego nie po prostu zawsze używałbyś SaveOrUpdate? Poza tym, jaki jest sens SaveOrUpdateCopy?SaveOrUpdate Vs Aktualizuj i zapisz w NHibernate
Odpowiedz
Rozdział 9 obejmuje to wszystko lepiej niż ja:
http://nhibernate.info/doc/nh/en/index.html
jednak urwiska Uwagi:
Save()
trwa nowy obiekt bez identyfikatora i przywiązuje go do sesji. Obiekt będzie INSERT
'd.
Update()
pobiera istniejący obiekt, który ma identyfikator, ale nie znajduje się w sesji i dołącza go do sesji. Obiekt będzie UPDATE
"d.
SaveOrUpdate()
sprawdza identyfikator i decyduje o tym, co jest konieczne.
SaveOrUpdateCopy()
jest wyjątkowy w tym, że masz dwa obiekty o tym samym identyfikatorze - jeden w sesji i jeden nie. Jeśli spróbujesz i nie będziesz w sesji, wyjątek jest generowany normalnie (próbujesz teraz dołączyć do sesji dwa obiekty reprezentujące ten sam trwały obiekt). SaveOrUpdateCopy()
kopiuje stan obiektu poza sesją do stanu obiektu sesji.
Nie jestem pewien, w jaki sposób zamierzasz korzystać z NH, ale w wielu przypadkach wszystko, czego potrzebujesz, to Save()
. Sesja wykonuje WSZYSTKIE prace niezbędne do uzyskania informacji, co należy zaktualizować, a po prostu Flush()
lub Commit()
robi wszystko, czego potrzebujesz.
- 1. Restful Rails Edytuj vs Aktualizuj
- 2. NHibernate, transakcje i TransactionScope
- 3. NHibernate - ISession vs. IStatelessSession
- 4. NHibernate vs. EF 4.1+
- 5. Błąd NHibernate - Zapisz przejściową instancję przed wypłukaniem
- 6. NHibernate - CreateCriteria vs CreateAlias
- 7. Laravel Epoquent - Zapisz/Aktualizuj pokrewne One-to-Many Relationship Data
- 8. Nhibernate session.BeginTransaction() vs. transaction.Begin()
- 9. Hibernate saveOrUpdate nie aktualizuje
- 10. Linq do NHibernate vs. ICriteria
- 11. DevExpress XPO vs NHibernate vs Entity Framework: Baza modernizacji kwestii
- 12. Dlaczego Fluent NHibernate vs. hbm XML?
- 13. EF vs Nhibernate Merge Disconnected Object Graph
- 14. zapisz i skompiluj automatycznie:
- 15. Cabal Aktualizuj i opakowania Błędy montażowe
- 16. dynamicznie aktualizuj TextView w Androidzie
- 17. Wybierz opcję Aktualizuj w PostgreSql
- 18. Aktualizuj produkty programowo w Magento
- 19. Skrypty Nhibernate i sql
- 20. nHibernate session i wielowątkowość
- 21. Członkostwo NHibernate i ASP.NET
- 22. próba utworzenia zdarzenia saveOrUpdate z jednostką zerową
- 23. NHibernate 3.3 i SysCache
- 24. W jaki sposób można zreplikować saveOrUpdate Hibernate w JPA?
- 25. Zapisz stan wizualnego studio
- 26. MSTest i NHibernate
- 27. Nhibernate i MS Access
- 28. WIDOK i płynny NHibernate?
- 29. Czas i Nhibernate
- 30. Aktualizuj tabele bazy danych
Zwykle nie potrzebujesz funkcji SaveOrUpdate(), ponieważ ścieżki NHibernate zmieniają się w każdym załadowanym obiekcie. Aby zaktualizować obiekt, użyj Session.Get(), zmodyfikuj, a następnie wywołaj Session.Flush(). –
Co jest bardziej czytelne, czy intencja ujawniająca się w kodzie, a następnie: 'SaveOrUpdate()' lub 'Flush()'/'Commit()'? Czy to nie robi różnicy (semantycznej czy innej)? –
Jawnie opróżnianie sesji prawdopodobnie nie jest konieczne. Jeśli dokonasz transakcji lub sesja wykracza poza zakres/zostanie usunięta, zmiany będą automatycznie zachowywane (lub wcześniej, jeśli muszą z jakiegoś powodu, generowanie identyfikatora lub podobne). Flush to zamiar - ujawniający (dla mnie), kiedy * potrzebujesz *, aby wymusić zmiany automatycznie, z powodu read-ioslacji lub jakiejś innej ezoteryki, i po prostu hałasu w przeciwnym razie. Każdy, kto jest zaznajomiony z NH, zrozumie również ukrytą "Aktualizację" dla dołączonych encji, więc myślę tak samo o wyraźnych instrukcjach 'SaveOrUpdate'. –