我正在使用實體框架4.1。什麼是處理實體框架併發的最好方法。是否有內置的功能來處理它在實體框架中? 我可以在不向表格添加額外列的情況下保留行版本嗎?處理實體框架併發的最佳方式
13
A
回答
6
你可以不用一個rowversion列,但經常需要存儲大量的狀態,它可以表現產生不利影響。
26
你可以設置你的命名RowVersion表列,並告訴您要包含在所有UPDATE的WHERE子句此列和DELETE語句實體框架。然後確保您爲所有更改的實體增加此字段。我已經做了這樣的:
//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();
}
}
相關問題
- 1. 在實體框架中篩選子實體的最佳方式
- 2. 在Zend框架中處理會話處理的最佳方式
- 3. 實體框架和WCF。最佳方法?
- 4. 實體框架的最佳實踐?
- 5. 更新實體框架中的實體的最佳方法
- 6. 使用實體框架時處理唯一約束的最佳方法
- 7. 通過JSON傳輸實體框架對象的最佳方式
- 8. 處理實體框架OptimisticConcurrencyException
- 9. 實體框架內處理
- 10. 實體框架最佳實踐
- 11. 實體框架最佳實踐
- 12. 實體框架和WPF最佳實踐
- 13. 實體框架:處理兩個實體
- 14. 鎖定表以處理實體框架3.5中的併發性
- 15. 實體框架4:添加和保存實體的最佳方式是什麼?
- 16. 以流的方式處理實體框架4.0中的BLOB
- 17. 實體框架併發
- 18. 實體框架ObjectContext:併發
- 19. 實體框架 - 如何最好地處理大量實體
- 20. 在實體框架中處理併發性
- 21. 最佳方式處理
- 22. 實體框架+「使用」模式的最佳實踐
- 23. Android中的「異常處理框架」的最佳實踐
- 24. 處理WCF中的存儲過程,實體框架的事務的最佳方式?
- 25. 實體框架 - 處理後的_objectTypeCount
- 26. 瞭解框架API的最佳方式?
- 27. 在Play框架中堅持JPA實體的最佳方法
- 28. 初始化實體框架上下文的最佳方法?
- 29. 在Web服務中使用實體框架的最佳方法
- 30. 處理JPA合併的最佳方法?
我看過這個問題。它有一個不同的想法謝謝http://stackoverflow.com/questions/3412690/entity-framework-objectcontext-concurrency –
我不能沒有行版本列嗎? –
我想你可以用'IsConcurrencyToken()'設置多個屬性,EF會在更新和刪除語句的where子句中添加這些列。我還沒有測試過。 –