PDA

View Full Version : خطای this sqltransaction has completed



Yanehsar
چهارشنبه 11 تیر 1399, 18:55 عصر
با سلام و وقت بخیر خدمت دوست
با استفاده از کدهای زیر میخوام transaction رو داخل برنامه پیاده کنیم که سورس درست هستش و بدون هیچ مشکلی برای بار اول مدیریت صورت میگیره اگر بدون خطا باشه داده ثبت میشه و اگر خطا داشته باشم Rollback اجرا میشه
ولی اگر دوبار پشت سر هم بخوام داده ثبت کنم با خطای زیر مواجعه هستم !!!
this sqltransaction has completed;it is no longer usable in linq
ممنون میشم راهنمائی بفرمائید .
نکته اینکه این تیکه کد داخل کلاس هستش .

bool transaction_ok =true;
try
{
Payment tblpayment = new Payment()
{
IDInsurance = IDInsurance,
DateDocument = DateDocument,
SumInsurance = SumInsurance,
SumPayment = SumPayment,
PaymentGroup = PaymentGroup,
ResultInsurance = ResultInsurance,
DatePayment = DatePayment,
Note=Note,
};
//UpdateSummaryInsurance(IDInsurance, SumPayment, ResultInsurance);
db.Transaction = db.Connection.BeginTransaction();
db.Payments.InsertOnSubmit(tblpayment);
Submit();
}
catch
{
transaction_ok = false;
}
finally
{
try
{
if (transaction_ok)
db.Transaction.Commit();
else
db.Transaction.Rollback();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
throw;
}

ShayanFiroozi
جمعه 13 تیر 1399, 08:51 صبح
سلام دوست گرامی ،

برای عبارت Zombie Transaction (https://www.google.com/search?q=zombie+transaction&rlz=1C1GCEA_enIR820IR820&oq=zombie+tra&aqs=chrome.0.69i59j46j0j69i57j46j0j69i60l2.5693j0j 4&sourceid=chrome&ie=UTF-8) در گوگل جستجو کنین.

Yanehsar
جمعه 13 تیر 1399, 20:41 عصر
سلام سپاس از راهنمائی شما
مشکل از کانکشنم بودش گویا

ShayanFiroozi
یک شنبه 15 تیر 1399, 10:33 صبح
بله ، زمانی که شما از یه کانکشن به صورت موازی و یا با پریود های خیلی کمی از زمان چند Command اجرا کنین اینجوری میشه ، سعی کنین برای هم تابع و یا کوئری یه instance کاملا مستقل از SQLConnection بسازین و اونو دورن تابع Open کنین و بعد از اینکه کارتون تموم شد حتما Close کنین که تعداد کانکشن های باز زیاد نشن.