首页 > 解决方案 > 有没有办法在 c# 中保留操作使用的变量?

问题描述

我在我的 c#MVC 应用程序中有这个问题,我有一个收据,这个收据有一个收据号,我选择插入数据库中的最后一个收据号并添加 1,当 2 个用户同时提交收据时出现问题时间。发生的情况是它们都获得了相同的收据编号,并且它们都插入到数据库中,不幸的是插入了一个,另一个给出了异常并回滚了整个操作。所以我的问题是有没有办法防止这种情况发生,换句话说,保留一个用户使用的收据号码,这样其他用户就不会使用它。

提前致谢。

标签: c#asp.net-mvc

解决方案


如果使用 sql server,您可能应该使用 IDENTITY 列。另一种选择是使用 GUID 作为键。

所以你需要重新设置每个新年的收据编号吗?您可以单独调用以先获取收据编号,而无需插入其他表。这将保留一个号码并立即返回。您可以为此使用一个标识列,或者每年使用一个单独的表,或者重置标识值并在每个新年开始时截断。或者,您可以有一个以 Year 和 ReceiptNumber 作为 PK 的 Ids 表,并插入一个将收据编号递增 1 的新行。


推荐阅读