行版本号及并发控制
行版本号 RowVersion 是指新增或修改时,这个字段都会被更新,它一般用来做增量判断或并发控制。在属性映射时,可以指定它的 IsRowVersion 为 true(见 属性映射),这样新增或修改数据时,均会自动更新此字段。作为 RowVersion 的属性的类型支持 DateTime
、DateTimeOffset
、Guid
、long
、byte[]
几种。
你只需要增加 RowVersion 字段并且打开 IsRowVersion = true 即可,如下所示:
public partial class Products : LightEntity<Products>
{
[PropertyMapping(ColumnName = "product_id", IsPrimaryKey = true, GenerateType = IdentityGenerateType.AutoIncrement, IsNullable = false)]
public virtual int Id { get; set; }
//省略
[PropertyMapping(ColumnName = "rowversion", IsNullable = false,
IsRowVersion = true,
IsConcurrencyToken = true)]
public virtual DateTime RowVersion { get; set; }
public virtual EntitySet<OrderDetails> OrderDetailses { get; set; }
}
并发控制即是实现悲观锁,它是为了防止多人同时修改同一条数据而造成的数据不一致问题。更新数据时,Fireasy 会使用此值作为附加的条件进行更新。它的控制有效时间取决于从查询出实体到更新的时间间隔。
与 IsRowVersion 类似,只要在映射时设置 IsConcurrencyToken = true 即可。并发控制标记一般使用 RowVersion 字段。