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只有更新附加后改变的字段