LINQ TO SQL 并发控制

Column特性的UpdataCheck用于设置并发冲突处理方式

  Always:使用使用这个列进行冲突检测

  Never 从不使用这个列进行冲突检测

  WhenChanged 仅在成员被应用程序更改时使用这个列检测

这里的检测指发送的SQL中的where中的条件,如UserInfo表中Name列进行冲突检测的话,SQL语句会类似这样(其中Id是主键)

 update UserInfo set ...  where [Id]=@p0 and [Name]=@p1  ...

如果没有指定IsVersion列,更新和删除都会生成很长的SQL语句,一般IsVersion和IsDBGenerated同时作用于一个列,因为Version一般由数据库生成,如一个时间戳列,通过触发器在修改列时更新

将一个非上下文的对象更新到数据库方法

  需要使用上下文的Attach方法(使用此方法要保证上下文的ObjectTrackingEnabled是true)

  附加的更新实体必须在所有字段的Column特性都设置了UpdateCheck=Nerver并且有IsPrimary=true的列,

  或设置了IsVersion=true的字段

  Attach方法第二个参数用于标识对象是否是更改的,是true的话,提交更改时会把所有字段更新;false只有更新附加后改变的字段

原文地址:https://www.cnblogs.com/FlyCat/p/2591823.html