c# - 有没有办法在 c# 中保留操作使用的变量?
问题描述
我在我的 c#MVC 应用程序中有这个问题,我有一个收据,这个收据有一个收据号,我选择插入数据库中的最后一个收据号并添加 1,当 2 个用户同时提交收据时出现问题时间。发生的情况是它们都获得了相同的收据编号,并且它们都插入到数据库中,不幸的是插入了一个,另一个给出了异常并回滚了整个操作。所以我的问题是有没有办法防止这种情况发生,换句话说,保留一个用户使用的收据号码,这样其他用户就不会使用它。
提前致谢。
解决方案
如果使用 sql server,您可能应该使用 IDENTITY 列。另一种选择是使用 GUID 作为键。
所以你需要重新设置每个新年的收据编号吗?您可以单独调用以先获取收据编号,而无需插入其他表。这将保留一个号码并立即返回。您可以为此使用一个标识列,或者每年使用一个单独的表,或者重置标识值并在每个新年开始时截断。或者,您可以有一个以 Year 和 ReceiptNumber 作为 PK 的 Ids 表,并插入一个将收据编号递增 1 的新行。
推荐阅读
- sql - 外键引用多个值的主键
- javascript - momentjs 返回错误的日期名称
- python - 如何向用户询问新项目并将其添加到列表(Python)
- ios - 如何检测视图控制器 iOS 的当前方向?
- c# - 在c#中将值从mdi子传递到父mdi表单
- python-decorators - 在装饰器中使用位置参数时出现类型错误
- python - 使用 OpenCV 和 Python 拍摄并保存多个图像和视频
- bash - 检查文件名是否包含 bash 脚本中的字符串
- python - 使用 ctypes 将字符串从 python 传递到 c++ - 只发送第一个字符
- php - CodeIgniter 3.x POST 为空