PDA

View Full Version : مشکل تداخل بین proccess ها در ذخیره اطلاعات در جداول دیتابیس در Entity FrameWork



saeidgab
سه شنبه 13 اردیبهشت 1390, 18:01 عصر
سلام به همگی،
من یه برنامه نوشتم که در DataAccess از EntityFrameWork استفاده کردم و اطلاعات حجیمی رو (تا 10000 رکورد) از طریق چند XML هر دقیقه میخونم و بعد از تجزیه تحلیل اونا، نتیجه رو در بانک ذخیره میکنم. در ضمن با توجه به حجم بالای اطلاعات و نیاز به سرعت در انجام تجزیه تحلیلها برنامه رو به صورت MultiThread نوشتم. مشکل اینه که بعضی وقتا proccess ها با هم در کار با دیتابیس تداخل پیدا میکنن و برنامه ارور زیر رو میده:

An error occurred while updating the entries. See the InnerException for details.
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
البته اول در select هایی هم که از دیتابیس میزدم ارور Timeout expired رو میداد که بعد از search تو نت این کد رو پیدا کردم و جاهایی که تو برنامه میخواستم با دیتابیس کار کنم ازش استفاده کردم:

using (var t = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
{
ObjectEntities ctx= new ObjectBetEntities();
}
اساتید که تجربه و دانشی در این زمینه دارن لطفا کمک کنن، با تشکر.

hastiam
یک شنبه 06 مهر 1393, 09:37 صبح
دوستان دقیقا من هم همین مشکل رو دارم تو بعضی از قسمتای برنامم از transactionscope استفاده کردم و وقتی چند کاربر همزمان باهم کار میکنند انگار تداخل پیدا میکنه و خطای زیر رو میده:
Timeout expired.The timeout period elapsed prior to completion of the operation or the serve is not responding
برای اینکه چند تا عملیاتی که با هم انجام می شود در صورتی که یکی از آنها اجرا نشد بقیه عملیات هم متوقف شود به جز استفاده از transactionscope ، آیا راه حل دیگه ای هم وجود داره؟

aghayex
سه شنبه 08 مهر 1393, 21:23 عصر
دوست عزیز چون شما دارید به طور همزمان چند عمل مثل درج یا ویرایش یا حذف رو انجام میدید با خطای همزمانی مواجه میشید و باید از تکنیک های رفع همزمانی استفاده کنید . در سایت آقای نصیری در جستجوی سایت بزنید همزمانی در ef مطالب خوبی رو براتون میاره .

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

aghayex
سه شنبه 08 مهر 1393, 21:26 عصر
دوست عزیز چون شما دارید به طور همزمان چند عمل مثل درج یا ویرایش یا حذف رو انجام میدید با خطای همزمانی مواجه میشید و باید از تکنیک های رفع همزمانی استفاده کنید . در سایت آقای نصیری در جستجوی سایت بزنید همزمانی در ef مطالب خوبی رو براتون میاره .

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