同时访问方法

时间:2017-09-06 06:17:11

标签: c# entity-framework concurrency asp.net-mvc-5

我会以简单的方式讲述我的问题。 有一个从UI传递的收据对象。但该对象没有收据编号。它在代码中生成下一个收据号。以下是序列。想象一下,这个工作流只需要2个db表,这两个表之间没有链接。一个用于保存数据到"收据" (用于保存收据数据)表,另一个是" GenerateNumber" (用于保存数字序列)表。

  1. 生成下一个收据编号。

  2. 生成的收据编号分配给对象属性。

  3. 创建收据。

  4. 提交更改。

  5.   

    代码

    //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进行数据操作。在这里,它不会使用任何存储过程。

0 个答案:

没有答案