I have a problem on my program, by solving this issue, it maybe can be done by using singleton method. But, i read from some article, they said,it is not a good way to implement it as the asp.net application concurrent users might have a lot.
My problem is,system running number is base on the particular record in the database example:
- document_type="INV" , document_year=2015 , document_month=04, document_running=0102.
- document_type="INV" , document_year=2015 , document_month=05, document_running=0002.
Therefore, when user create a new record, the logic of getting the new running number as below:
- Get the document type = "inv" , current year and current month,
- If not found. create a new document type , year and month record with the running number 0001.
- if found. running + 1.
now, the problem come out. my situation is 5 users received the record information as when they pressed "save" button to create a new record: - document_type="INV" , document_year=2015 , document_month=05, document_running=0002.
and 5 users get the same running number INV15-05-0003 ( after 0002 + 1). By right, should be INV15-05-0003, INV15-05-0004, INV15-05-0005, INV15-05-0006 and INV15-05-0007.
how we should do to avoid if all users getting the wrong/outdated information. hope you all able to understand on my poor english. Regards, MH
The only way I see is to use a lock on the method you are calling to do the database management.