You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Entity Framework Core是否具备NHibernate版本号自动管理的等效功能?

Entity Framework Core 中的版本号映射(对应NHibernate的Version功能)

EF Core 提供了类似NHibernate中版本号自动管理的功能,主要通过**并发令牌(Concurrency Token)**实现,分两种常见场景:

1. 使用数据库原生的RowVersion/Timestamp类型(推荐)

这种方式由数据库自动维护版本号,无需手动处理递增逻辑,并发冲突时EF Core会自动抛出DbUpdateConcurrencyException。

实体定义与配置

  • 实体属性:
    public byte[] Version { get; set; }
    
  • 数据注解方式:
    [Timestamp]
    public byte[] Version { get; set; }
    
  • Fluent API方式:
    modelBuilder.Entity<YourEntity>()
        .Property(e => e.Version)
        .IsRowVersion();
    

2. 自定义整数类型版本号(模拟NHibernate的整数自增版本)

如果需要和NHibernate一致的整数类型版本号(默认值1,每次更新自动递增),可以通过以下配置实现:

实体定义与配置

  • 实体属性:
    public int VersionNumber { get; set; }
    
  • Fluent API配置:
    modelBuilder.Entity<YourEntity>()
        .Property(e => e.VersionNumber)
        .IsConcurrencyToken() // 标记为并发令牌,用于并发冲突检测
        .HasDefaultValue(1) // 设置初始默认值为1
        .ValueGeneratedOnAddOrUpdate(); // 指定新增/更新时自动生成值
    

注意:ValueGeneratedOnAddOrUpdate需要数据库层面支持自动递增逻辑,例如在SQL Server中可配合触发器实现更新时版本号+1,或者在EF Core的SaveChanges前手动处理版本号递增。

内容的提问来源于stack exchange,提问作者rank0001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:25:32