Przesyłam dane między strukturą encji a warstwą biznesową i warstwą użytkownika za pomocą obiektów przenoszenia danych. Mam pewne wątpliwości, jeśli pobierze obiekt, który jest konwertowany do DTO, jak zaktualizować poprawny obiekt w strukturze podmiotu, a nie tylko wstawić duplikat?Zaktualizuj obiekty struktury encji
24
A
Odpowiedz
2
Musisz wprowadzić klucz podstawowy lub zapasowy w DTO, a następnie dopasować ten klucz z powrotem do właściwej jednostki EF po aktualizacji.
7
stare pytanie, ale tylko w przypadku gdy ktoś potrzebuje rozwiązania code:
Przykład:
public void EditArticle(
Article article, string articleTypeId, string[] categoryId)
{
var id = 0;
Article art = de.ArticleSet
.Include("ArticleTypes")
.Include("Categories")
.Where(a => a.ArticleID == article.ArticleID)
.First();
var count = art.Categories.Count;
for (var i = 0; i < count; i++)
{
art.Categories.Remove(art.Categories.ElementAt(i));
count--;
}
foreach (var c in categoryId)
{
id = int.Parse(c);
Category category = de.CategorySet
.Where(ct => ct.CategoryID == id).First();
art.Categories.Add(category);
}
art.Headline = article.Headline;
art.Abstract = article.Abstract;
art.Maintext = article.Maintext;
art.DateAmended = DateTime.Now;
art.ArticleTypesReference.EntityKey = new EntityKey(
"DotnettingEntities.ArticleTypeSet",
"ArticleTypeID",
int.Parse(articleTypeId)
);
de.SaveChanges();
}
28
Poniższy kod będzie zaktualizować EF 4 podmiot, który został utworzony jako parametr kontrolera w MVC z mocno wpisanego widoku:
Wydaje się, że wystarczy użyć ObjectStateManagera, aby zmienić stan rom Dodano do Zmodyfikowanej, gdy jednostka została dodana do kontekstu.
MyEntities db = new MyEntities();
db.Product.AddObject(product);
db.ObjectStateManager.ChangeObjectState(product, System.Data.EntityState.Modified);
return db.SaveChanges() > 0;
Zgodnie @Sean Mills komentować jeśli używasz korzystanie EF5:
((IObjectContextAdapter) db).ObjectContext.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Added);
4
//I am replacing player :)
public ActionResult ProductEdit(string Id, Product product)
{
int IdInt = DecyrptParameter(Id);
MyEntities db = new MyEntities();
var productToDetach = db.Products.FirstOrDefault(p=> p.Id == IdInt);
if (product == null)
throw new Exception("Product already deleted"); //I check if exists, maybe additional check if authorised to edit
db.Detach(productToDetach);
db.AttachTo("Products", product);
db.ObjectStateManager.ChangeObjectState(product, System.Data.EntityState.Modified);
db.SaveChanges();
ViewData["Result"] = 1; // successful result
return View();
}
2
To powinno działać dla EF 5: https://stackoverflow.com/a/11749716/540802:
db.Entry(product).State = EntityState.Modified;
Powiązane problemy
- 1. Użycie pamięci struktury encji
- 2. Ograniczanie rozmiaru kwerendy za pomocą struktury encji
- 3. Jak używać struktury encji z danymi hierarchicznymi?
- 4. Dwa różne obiekty z tym samym kluczem dla struktury encji nie działają
- 5. json.net; serializacja obiektu struktury encji (błąd odwołania cyklicznego)
- 6. Zaktualizuj klasę encji w programie ASP.NET Core Entity Framework
- 7. Połączone struktury: Zaktualizuj pola struct bez nadpisywania istniejących pól
- 8. Co ma nhibernate, brakuje tej struktury encji 4?
- 9. Kod struktury encji Najpierw obcięcie moich miejsc dziesiętnych
- 10. Korzystanie z struktury encji w wielu bazach danych
- 11. Kwerenda struktury encji zwraca ten sam wiersz wiele razy.
- 12. "Odmowa dostępu" podczas instalowania dostawcy danych Oracle dla struktury encji
- 13. Dlaczego powinienem używać nhibernate zamiast struktury encji 4
- 14. Podejście lub zapytanie dotyczące asynchronicznych ram struktury encji?
- 15. Jak odwzorować obiekty JSON z dynamicznymi polami na struktury Go
- 16. Dlaczego roslyn zawija obiekty w struktury po umieszczeniu w tablicach?
- 17. Używanie struktury encji do dodawania istniejących obiektów do kolekcji w nowo utworzonym elemencie.
- 18. Uruchamianie sql w strukturze encji?
- 19. Struktura encji i UPDATE CASCADE
- 20. Należy użyć int lub long dla klucza podstawowego w modelu struktury encji
- 21. sposób generowania tabeli na hierarchię przy użyciu struktury encji 5 modelu najpierw
- 22. Jak określić maksymalną długość kolumny pola przy użyciu kodu struktury encji najpierw
- 23. Łańcuch połączenia programu SQL Server 2008 dla struktury encji 4.1 kod pierwszy
- 24. Jak zapytać serwer bazy danych o bieżącą datę i godzinę za pomocą struktury encji?
- 25. Integracja testowanie struktury encji - oddzielenie wywołania metody seed tylko dla PROD -
- 26. Najlepsza praktyka blokowania rekordu do edycji podczas korzystania z struktury encji
- 27. Kod struktury encji, co powoduje, że kolumna nie nadaje się do null
- 28. Dlaczego studio graficzne usuwa moje klasy, gdy aktualizuję model struktury encji
- 29. Jak wykonać wyszukiwanie pełnotekstowe (FTS) za pomocą Linq do struktury encji ADO.NET?
- 30. Błąd struktury encji podczas aktualizacji modelu z bazy danych i na odwrót
Wreszcie! Zmarnowałem tyle czasu z innymi obejściami - działa to bez potrzeby dbObject.Property = passedObject.Property dla każdej właściwości podczas aktualizacji. – kape123
, jeśli obiekt ObjectStateManager nie jest właściwością kontekstu, należy wypróbować ((System.Data.Entity.Infrastructure.IObjectContextAdapter) db) .ObjectContext http://stackoverflow.com/a/8968643/678338 –