我的C#应用程序使用EF并在int列上调用min()以从数据库表中获取数字序列中的“下一个”数字。数据库表已经准备好了下一个X号码,我的EF代码只需要获取“下一个”号码,然后在获得此号码后,代码将删除该条目,以便下一个请求获得以下一个等等。应用程序的一切都很好,但有多个用户,这会导致并发问题。是否有一种设计模式可以为所有用户以串行方式获取下一个min()值,而无需求助于存储过程?我正在使用EF4.5和EF5的混合。
谢谢,皮特
答案 0 :(得分:0)
首先,您可以在表中添加时间戳类型列,并在Entity Framework属性窗口中将并发模式设置为Fixed。 这样做可以在表上启用乐观并发检查。如果有另一个数据上下文试图中断您的更新,它将生成一个除外。
或者,您可以在选择/更新逻辑上使用TransactionScope对象。您可以使用TransactionScope逻辑简单地包装代码逻辑,并且范围内的所有内容都将由事务强制执行。
检查此链接以获取更多信息: TransactionScope vs Transaction in LINQ to SQL