PDA

View Full Version : سوال: lock در linq



mehran_sh_t
چهارشنبه 11 مرداد 1391, 14:47 عصر
سلام
در یک پروژه تحت شبکه، فکر می کنم با روند زیر به مشکل برخورد کنم، اگر دو کاربر همزمان تابع رو فراخونی کنند.


int id = select max id from sometable;

myobj.newid = id+1

add myobj to database



دوستان به دلایلی مجبورم از این روش استفاده کنم، نه اتونامبر

آیا روشی برای lock دستورات در این سطح هستش؟ که id که به هر کاربر برگردونده میشه، متفاوت از دیگری باشه؟

sahebgharan
پنج شنبه 12 مرداد 1391, 16:57 عصر
http://msdn.microsoft.com/en-us/library/c5kehkcz(v=vs.80).aspx

Mahmoud.Afrad
پنج شنبه 12 مرداد 1391, 22:54 عصر
یک فیلد اتونامبر داشته باشید برای کلید اصلی یک فیلد هم برای کاری که نیاز دارید(مثلا کد دانشجویی) دستی بهش مقدار بدید. چون کدی که شما تعیین میکنید ممکنه تغییر کنه ولی کلید اصلی نباید تغییر کنه. اینطوری دیگه نگران کلیداصلی نیستید و فقط کد مورد نظر خودتون رو باید بسازید.

mehran_sh_t
جمعه 13 مرداد 1391, 12:42 عصر
لطفا سوال رو بخونید!!! لطفا، لطفا!!!!


یک فیلد اتونامبر داشته باشید برای کلید اصلی یک فیلد هم برای کاری که نیاز دارید(مثلا کد دانشجویی) دستی بهش مقدار بدید. چون کدی که شما تعیین میکنید ممکنه تغییر کنه ولی کلید اصلی نباید تغییر کنه. اینطوری دیگه نگران کلیداصلی نیستید و فقط کد مورد نظر خودتون رو باید بسازید.

من این جمله رو در صورت سوال ذکر کردم:


دوستان به دلایلی مجبورم از این روش استفاده کنم، نه اتونامبر

tooraj_azizi_1035
چهارشنبه 18 مرداد 1391, 12:21 عصر
دوست من شما این مقاله رو بخون: http://msdn.microsoft.com/en-us/library/ks9f57t0%28v=vs.71%29.aspx
اگه ممکنه دلایلت رو در استفاده نکردن از AutoNumber بگو.

mehran_sh_t
چهارشنبه 18 مرداد 1391, 21:48 عصر
دوستان گرامی، خواهشا سوال رو بخونید.
دوست عزیز، لینکی که فرستادید، روش برگردوندن ID رکورد اضافه شده رو بر توضیح داده...


اگه ممکنه دلایلت رو در استفاده نکردن از AutoNumber بگو. این عددی که قراره یکتا باشه، قراره شماره سند باشه، و برای هر سال از اول تولید بشه.
مثلا سال 91، از 1 تا ...
سال 92، 1 تا ...

auto number همچین خاصیتی نداره

kamrannazari
جمعه 21 مهر 1391, 13:21 عصر
من هم ا مجبورم از اين روش استافده كنم چون بايد بعد از تغييرات و درج ركوردها بايد اين ركوردها رو با چند بانك ديگه ادغام كنم كه در صورتي كه identity باشه اين كار غير ممكنه