我会以简单的方式讲述我的问题。 有一个从UI传递的收据对象。但该对象没有收据编号。它在代码中生成下一个收据号。以下是序列。想象一下,这个工作流只需要2个db表,这两个表之间没有链接。一个用于保存数据到"收据" (用于保存收据数据)表,另一个是" GenerateNumber" (用于保存数字序列)表。
生成下一个收据编号。
生成的收据编号分配给对象属性。
创建收据。
提交更改。
代码
//customerReceipt obejct has all data except receipt number.
AutoGenerateDocumentNo autoGen = new AutoGenerateDocumentNo();
autoGen =_autoGenDocService.GenerateNextNumberSequence();//This method use to get next number
customerReceipt.ReceiptNo = autoGen.GeneratedNumber;
CreateCustomerReceiptHeader(customerReceipt); //Save function
Save(); // commite changes (this commit will efeect to both receipt and generate next number table)
在上面的代码中只有一个提交。但是当同时访问此方法时,从一个收据号码生成几个收据。但我不知道如何避免这种情况。我刚用过" Lock"避免这个的关键词。但它不会起作用。然后我尝试在 GenerateNextNumberSequence 方法中提交保存。它也没有用。
请指导我做上述任务。
更新1
该项目使用Entity-framework进行数据操作。在这里,它不会使用任何存储过程。