Concurrency ASP.net核心上的时间戳don';无法更改数据库中的行版本

Concurrency ASP.net核心上的时间戳don';无法更改数据库中的行版本,concurrency,asp.net-core,timestamp,rowversion,Concurrency,Asp.net Core,Timestamp,Rowversion,我有这样的密码: public class BaseClass{ [ConcurrencyCheck] [Timestamp] public byte[] RowVersion { get; set; } } public class User : BaseClass { public string UserName { get; set; } } public class Context : DbContext{ public DbSet<Us

我有这样的密码:

public class BaseClass{
    [ConcurrencyCheck]
    [Timestamp]
    public byte[] RowVersion { get; set; }
}

public class User : BaseClass
{
    public string UserName { get; set; }
}

public class Context : DbContext{
    public DbSet<User> Users { get; set; }
...
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
     modelBuilder.Entity<User>().Property(b => b.RowVersion)
            .ValueGeneratedOnAddOrUpdate()
            .IsConcurrencyToken();//It should not be necessary because I already specified in annotation
    }
    public override int SaveChanges()
    {
        var changes = ChangeTracker.Entries<BaseClass>().Where(p => p.State == EntityState.Modified).Select(u => u.Entity);
        foreach (var change in changes)
        {
            Entry(change).Property(u => u.RowVersion).OriginalValue = new byte[] { 0, 0, 0, 0, 0, 0, 0, 120 };
        }
        return base.SaveChanges();
    }
}

public class UserBusiness
{

     public void Update(User user)
    {
        using(var ctx=new Context())
       {
        var editedUser=ctx.Set<User>().Where(u => u.Id == user.Id).FirstOrDefault();
        editedUser.RowVersion = new byte[] { 0, 0, 0, 0, 0, 0, 0, 120 }; 
        ctx.SaveChanges();
       }
     }
}
公共类基类{
[并发检查]
[时间戳]
公共字节[]行版本{get;set;}
}
公共类用户:基类
{
公共字符串用户名{get;set;}
}
公共类上下文:DbContext{
公共数据库集用户{get;set;}
...
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity().Property(b=>b.RowVersion)
.ValueGeneratedOnAddOrUpdate()
.IsConcurrencyToken();//应该不需要,因为我已经在注释中指定了
}
公共覆盖int SaveChanges()
{
var changes=ChangeTracker.Entries()。其中(p=>p.State==EntityState.Modified)。选择(u=>u.Entity);
foreach(变化中的var变化)
{
Entry(change).Property(u=>u.RowVersion).OriginalValue=新字节[]{0,0,0,0,0,0,0,120};
}
返回base.SaveChanges();
}
}
公共类用户业务
{
公共无效更新(用户)
{
使用(var ctx=new Context())
{
var editedUser=ctx.Set(),其中(u=>u.Id==user.Id).FirstOrDefault();
editedUser.RowVersion=新字节[]{0,0,0,0,0,0,120};
ctx.SaveChanges();
}
}
}
我希望在db中发现RowVersion发生了更改,但是相同的。 EditeUser.RowVersion已更改,更改跟踪器将检测到更改,但在调用SaveChanges()后,数据库中的RowVersion具有相同的初始值