Sono stato con Add()
e corse in un problema in cui da una controllante veniva duplicata nel database quando Add
ing un bambino. Utilizzando Attach()
risolto questo, ma mi piacerebbe sapere perché, piuttosto che inciampare ciecamente intorno.Quando utilizzare DbSet <T> .Add() vs DbSet <T> .Attach()
risposta
Bene, quando si utilizza Attach
si indica al contesto che l'entità è già nel database, SaveChanges
non avrà alcun effetto sulle entità collegate. Add
, d'altra parte, cambia lo stato dell'entità nel contesto (se è già presente) a Added
, vale a dire che sarà sempre inserire l'entità nel database quando si chiama SaveChanges
.
Questa è la differenza.
Grazie per la risposta. Perché in un "Controller" generato automaticamente in Edit si usa 'db.Entry (model) .State = EntityState.Modified; db.SaveChanges(); 'e non' Attach() '? –
Perché quando si 'Attach()' un'entità che è già nel ** contesto **, come nel caso dell'entità memorizzata nella variabile 'model', imposta lo stato dell'entità su' Invariato', quindi se usi 'Attach()' per questo fine la tua entità non sarà aggiornata quando tu chiamerai 'SaveChanges()'. –
- 1. Come utilizzare l'espressione del generatore CMake $ <TARGET_FILE: tgt>?
- 2. ObjectSet.Context vs DbSet
- 3. iterazione su DbSet <TEntity> vs IQueryable <out T>
- 4. EF6 DbSet <T> restituisce NULL in Moq
- 5. Riferimenti per DBContext, DBSet <> in Entity Framework
- 6. Quando si utilizza DbSet <T> .SqlQuery(), come utilizzare i parametri denominati?
- 7. Metodo generico per recuperare DbSet <T> da DbContext
- 8. Entity Framework e DbSet
- 9. c'è qualcosa come DbSet <T> .RemoveWhere (Predicate <T>)
- 10. Chiama AsQueryable <T> su un DbSet <T> "sicuro"?
- 11. Come si converte questo IQueryable <Patient> in DbSet <Patient>?
- 12. Utilizzando IQueryable <TEntity> invece DbSet <TEntity> problema
- 13. Come convertire DbSet <T> in Elenco <T>
- 14. Applica ordine con DbSet
- 15. Informazioni su DbSet e DbContext
- 16. Quando utilizzare <%# ... %> e <%= ... %>?
- 17. Esiste un DbSet <TEntity>. Equivalente locale in Entity Framework 7?
- 18. DbSet <T>. Dove (dove) .ToList() - perché SQL non include la clausola where?
- 19. Come generalizzare l'accesso ai membri DbSet <TEntity> di un DbContext?
- 20. DBSet non contiene una definizione per Dove
- 21. Ordinamento dei dati tramite EF DbSet
- 22. Codice EF prima PluralizingTableNameConvention per ONE DbSet
- 23. PHP: <<< vs ob_start
- 24. <applet> vs <object>
- 25. Entity Framework dbset modo più efficace per l'eliminazione di
- 26. GameObject.FindObjectOfType <>() vs GetComponent <>()
- 27. GSSException: nessuna credenziale valida fornita (livello meccanismo: impossibile trovare tgt Kerberos)
- 28. Annulla "git add <dir>"?
- 29. Rails ERB <%- ... -%> vs. <% ... %>
- 30. python -c vs Python - << heredoc
Penso che questo http://stackoverflow.com/questions/3920111/entity-framework-4-addobject-vs-attach si spera risponda alla tua domanda –
Grazie. Ciò ha anche aiutato: http://stackoverflow.com/a/15310068/1185053 –