Używam struktury encji 4.1.Co najlepiej obsłużyć współbieżność ze strukturą encji. Czy istnieje wbudowana funkcjonalność do obsługi go w strukturze encji? Czy mogę to zrobić bez dodawania dodatkowej kolumny do tabel, aby zachować wersję wiersza?Najlepszy sposób na obsługę współbieżności w ramach encji
13
A
Odpowiedz
6
Widziałeś ten tutorial: http://www.asp.net/entity-framework/tutorials/handling-concurrency-with-the-entity-framework-in-an-asp-net-mvc-application
można to zrobić bez kolumny rowversion ale często wymaga przechowywania dużo państwa, które mogą mieć negatywny wpływ wydajności .
26
Możesz ustawić kolumnę w tabelach o nazwie RowVersion i powiedzieć Entity Framework, że chcesz, aby ta kolumna była zawarta w klauzulach where wszystkich instrukcji UPDATE i DELETE. Następnie upewnij się, że zwiększasz to pole dla wszystkich zmienionych jednostek. Zrobiłem to tak:
//make all entities that need concurrency implement this and have RowVersion field in database
public interface IConcurrencyEnabled
{
int RowVersion { get; set; }
}
public class MyDbContext : DbContext
{
public override int SaveChanges()
{
foreach(var dbEntityEntry in ChangeTracker.Entries().Where(x => x.State == EntityState.Added || x.State == EntityState.Modified))
{
IConcurrencyEnabled entity = dbEntityEntry.Entity as IConcurrencyEnabled;
if (entity != null)
{
entity.RowVersion = entity.RowVersion + 1;
}
}
return base.SaveChanges();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//do all your custom model definition but have the following also:
modelBuilder.Entity<myEntity>().Property(x => x.RowVersion).IsConcurrencyToken();
}
}
Powiązane problemy
- 1. Jaki jest najlepszy sposób na obsługę I18N w tabelach odnośników?
- 2. Jaki jest najlepszy sposób na obsługę zdarzeń w Ember.js?
- 3. Najlepszy sposób na obsługę właściwości pustych w parametrze metody
- 4. Jaki jest najlepszy sposób na obsługę wiadomości FBO w OpenGL?
- 5. Najlepszy sposób na obsługę dużej kolekcji formularzy w Symfony2
- 6. Najlepszy sposób na obsługę łańcucha animacji za pomocą UIViewAnimations
- 7. Jaki jest najlepszy sposób na rozszerzenie restful_authentication/AuthLogic na obsługę leniwych loginów przez anonimowego iPhone'a?
- 8. Czy istnieje wtyczka licencyjna Gradle lub Jaki jest najlepszy sposób na obsługę Licencji na zależności?
- 9. T-SQL: Najlepszy sposób na obsługę wartości NULL w konkatenacji ciągów znaków
- 10. Jaki jest najlepszy sposób na obsługę generowanych przez użytkowników treści html, które będą wyświetlane publicznie?
- 11. Najlepszy sposób na obsługę https, http, www i brak strony www za pomocą Google analytics
- 12. Spring MVC: najlepszy sposób na obsługę wyjątków dla żądania Ajax i normalnego żądania?
- 13. Jaki jest najlepszy sposób na obsługę aktualizacji, gdy kalendarz synchronizuje nowe zdarzenia?
- 14. Najlepszy sposób na buforowanie json
- 15. Najlepszy sposób na wyczyszczenie UITextField
- 16. Najlepszy sposób na generowanie xml?
- 17. Najlepszy sposób na "zanegowanie" instancji
- 18. Najlepszy sposób na wykrycie IronPython
- 19. Najlepszy sposób na pusty stringstream?
- 20. Najlepszy sposób na dołączenie Linq
- 21. Najlepszy sposób użycia ServiceManager w klasie modelu?
- 22. Jaki jest najlepszy sposób ograniczenia współbieżności przy użyciu opcji Promise.all() ES6?
- 23. Najlepszy sposób na udostępnianie społecznościowe w Androidzie
- 24. Najlepszy sposób na sprawdzenie alfanumeryczne w JavaScript
- 25. Najlepszy sposób na stoper w systemie UNIX
- 26. Najlepszy sposób na parsowanie HTML w Qt?
- 27. Najlepszy sposób na analizowanie int w JavaScript
- 28. Najlepszy sposób na urldecode (php) w NodeJS
- 29. Najlepszy sposób na użycie BufferedReader w Kotlin
- 30. Najlepszy sposób na zapisanie pliku w C#
Przeczytałem to pytanie. ma inny pomysł, dziękuję http://stackoverflow.com/questions/3412690/entity-framework-objectcontext-concurrency –
Nie mogę tego zrobić bez kolumny wersji wiersza? –
Myślę, że możesz ustawić więcej niż jedną właściwość z 'IsConcurrencyToken()', a EF doda te kolumny w klauzuli where instrukcji aktualizacji i usuwania. Nie testowałem tego jednak. –