gpt4 book ai didi

entity-framework - 使用 Entity Framework 处理并发的最佳方式

转载 作者:行者123 更新时间:2023-12-03 23:07:43 25 4
gpt4 key购买 nike

我正在使用 Entity Framework 4.1。处理与 Entity Framework 并发的最佳方法是什么。是否有内置功能可以在 Entity Framework 中处理它?
我可以不向表中添加额外的列以保持行版本吗?

最佳答案

您可以在表中设置一个名为 RowVersion 的列,并告诉 Entity Framework 您希望该列包含在所有 UPDATE 和 DELETE 语句的 where 子句中。然后确保为所有更改的实体增加此字段。我是这样做的:

//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();
}
}

关于entity-framework - 使用 Entity Framework 处理并发的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6554860/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com