sql – 在行使实体框架时锁定记录以举办编辑的最佳实践
不太确定怎样说出这个题目,但在这里.我正在开拓一个项目,个中多个客户端应用措施通过WCF处事会见一个数据源.它也许不相干,但WCF处事正在操作实体框架来会见此数据源.每当客户端查询记录举办编辑时,我想阻止其他客户端编辑统一记录,直到第一个客户端完成更新. 假如我错了,请更正我,但我信托这也称为同步和异步数据会见. 我的题目是,实现此成果的行业最佳实践是什么.有没有步伐从数据库端(行使SQL)节制它,照旧必需通过客户端完成? 我思量过为每个表包括一个布尔“EditMode”列,并在编辑时简朴地将其配置为true,并在应承其他客户端会见该记录之前搜查是否配置为true. 办理要领最佳做法是行使RowVersion和乐观锁定.Optimistic Concurrency Patterns表明. 假如起首行使代码,则在POCO中包括一个字段. public virtual byte[] RowVersion { get; set; } EF将为您的表添加Timestamp / RowVersion属性.它将在更新时代举办搜查.并在变动时由DB自动更新. 编辑:更好地表明. EF正在探求的属性是并发字段,因此您可以现实节制一个或多个字段的并发性. entity.Property(p => p.RowVersion).IsConcurrencyToken() 执行更新或删除时,您捕捉已界说的非常 catch (DbUpdateConcurrencyException ex) EF将RowVersion视为并发令牌.这是一样平常行使的要领.因为SQLServer会自动为您更新此字段范例. 因此,EF应该为where子句添加属性以举办更新和删除确保记录自会见后没有变革. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |