خرید بک لینک

سلام
دوستان من یه فیلد دارم به اسم count که مثلا مقدار 100 داره و هر کاربری که به این دسترسی پیدا میکنه من یسری عملیات انجام میدم و یکی از این عملیات ها هم کم کردن یک مقدار از همین عدد 100 میشه.یعنی با هر بار دسترسی من از 100 یکی کم میکنم تا زمانی که به صفر میرسه .وقتی به صفر رسید من یه فیلد دیگه رو مقدار دهی میکنم (مثلا تموم شده) و دیگه اجازه دسترسی به این رکورد رو نمیدم و کل این عملیات رو داخل بلاک کد زیر انجام میدم.مشکل اینجاست که ممکنه در لحظه بیش از 100 نفر درخواست دسترسی بدن(مثلا 150 نفر) اینجاست که همه با هم به رکورد دسترسی پیدا میکنن و مقدار فیلد count در نهایت خیلیی کمتر از صفر میشه (به ازای اون 50 نفر اضافه میشه 50-).اینجاست که محاسبات من میریزه به هم .چیکار باید کنم که حتی اگه هزار نفر هم همزمان دسترسی میخواستن انجام نشه در حقیقت مثلا یه صف باشه .مثل عملیات بانکی .من تا جایی که میدونستم باید از transaction استفاده میکردم که همین کار هم کردم ولی خب نتیجه نداده .

 using (TransactionScope scope = new TransactionScope())

این رو فراموش کردم که اضافه کنم حالتی پیش میاد که که فیلد count هنوز به صفر نرسیده ولی مقدار اون یکی فیلد تموم شده ثبت میشه.سوال اینجاست این بخاطر اینه که به صورت همزمان تعداد زیادی کاربر به این رکورد دسترسی پیدا میکنه؟؟؟؟؟؟چطور ممکنه وقی شرط من اینه که اگر مقدار فیلد count کمتر از صفر بود مقدار اون یکی فیلد تموم شده بشه، بعد قبل از اینکه اون صفر بشه این تموم شده میشه؟؟؟؟؟!!!!!!!

- - , .
.

برچسب: نویسنده: محمد رضا جوادیان تاريخ: پنجشنبه 24 تير 1395 ساعت: 16:13

صفحه بندی