View Full Version : خطا در Transaction
shahrabiamir
چهارشنبه 02 فروردین 1402, 23:13 عصر
با سلام
من از EF برای ذخیره داده ها استفاده میکنم و همچنین توی کد از DbTransaction جهت کنترل Transcation استفاده شده اما ارور زیر را میدهد:
SqlConnection does not support parallel transactions
راهکار استفاده از کلاس بالا جهت کنترل تراکنشها چیست؟ توی اینترنت سرچ زدم اما چیزی پیدا نکردم
Mahmoud.Afrad
جمعه 04 فروردین 1402, 06:43 صبح
Transactions - EF Core | Microsoft Learn (https://learn.microsoft.com/en-us/ef/core/saving/transactions)
shahrabiamir
جمعه 04 فروردین 1402, 18:47 عصر
\Transactions - EF Core | Microsoft Learn (https://learn.microsoft.com/en-us/ef/core/saving/transactions)
همون ارور رو میده. کد من اینه :
try
{
database.Connection.Open();
var transaction = database.Connection.BeginTransaction();
DatabaseModel.tbl_Person psn = new DatabaseModel.tbl_Person()
{
firstName = txtName.Text.Trim(),
lastName = txtFamily.Text.Trim(),
nationalNumber = int.Parse(txtNationalID.Text.Trim())
};
database.tbl_Persons.InsertOnSubmit(psn);
database.SubmitChanges();
transaction.Rollback();
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
من میخوام کلا رول بک کنه. ولی ارور میده
SajjadKhati
یک شنبه 06 فروردین 1402, 08:19 صبح
سلام
طبق لینک زیر :
c# - When does "SqlConnection does not support parallel transactions" happen? - Stack Overflow (https://stackoverflow.com/questions/19559715/when-does-sqlconnection-does-not-support-parallel-transactions-happen)
این اتفاق زمانی میافته که قبل از اینکه connection ای که باهاش transaction میکنید را commit نکرده باشین و بعدش بیاین از همون شیِ connection ، متد BeginTransaction را فراخونی کنین و کلا transaction ئه جدیدی را انجام بدید .
فرضا ممکنه در یک یا حتی چند نخ مجزا ، این کار را انجام داده باشین و متد BeginTransaction را فراخوانی کرده باشین .
Mahmoud.Afrad
دوشنبه 07 فروردین 1402, 05:50 صبح
همون ارور رو میده. کد من اینه :
...
من میخوام کلا رول بک کنه. ولی ارور میده
چرا؟!
رول بک بایست در catch (بعذ از وقوع استثنا) باشه.
shahrabiamir
پنج شنبه 10 فروردین 1402, 14:59 عصر
کد رو تغییر دادم ولی همون ارور رو میده:
database.Connection.Open();
var transaction = database.Connection.BeginTransaction();
try
{
DatabaseModel.tbl_Person psn = new DatabaseModel.tbl_Person()
{
firstName = txtName.Text.Trim(),
lastName = txtFamily.Text.Trim(),
nationalNumber = int.Parse(txtNationalID.Text.Trim())
};
database.tbl_Persons.InsertOnSubmit(psn);
database.SubmitChanges();
transaction.Commit();
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
transaction.Rollback();
}
database.Connection.Close();
Mahmoud.Afrad
پنج شنبه 17 فروردین 1402, 22:27 عصر
قبلش از شی database استفاده کردید؟
shahrabiamir
جمعه 18 فروردین 1402, 23:29 عصر
قبلش از شی database استفاده کردید؟
خیر. شی دیتابیس را در بیرون از متد ساختم و اولین بار که کلیک میکنم ارور میده
Mahmoud.Afrad
دوشنبه 21 فروردین 1402, 01:57 صبح
یک پروژه تستی با کد مشابه بسازید و اگر همین خطا رو داد، پروژه رو بزارید اینجا بررسیش کنیم.
shahrabiamir
سه شنبه 22 فروردین 1402, 01:00 صبح
یک پروژه تستی با کد مشابه بسازید و اگر همین خطا رو داد، پروژه رو بزارید اینجا بررسیش کنیم.
https://uupload.ir/view/windowsformsapp1_lzrx.zip/
Mahmoud.Afrad
چهارشنبه 23 فروردین 1402, 17:37 عصر
https://uupload.ir/view/windowsformsapp1_lzrx.zip/
توی پروژه از linq to sql استفاده کردید نه ef
توی ef وقتی از متد savechanges استفاده کنید، خودش از تراکنش استفاده خواهد کرد
Entity Framework Transaction - Learn How it Works with SaveChanges (https://entityframework.net/transaction)
shahrabiamir
چهارشنبه 23 فروردین 1402, 19:15 عصر
توی پروژه از linq to sql استفاده کردید نه ef
توی ef وقتی از متد savechanges استفاده کنید، خودش از تراکنش استفاده خواهد کرد
Entity Framework Transaction - Learn How it Works with SaveChanges (https://entityframework.net/transaction)
ADO.NET و LINQ to SQL چطور ؟
من از ADO.NET هم استفاده میکنم همین ارور رو میده
shahrabiamir
سه شنبه 29 فروردین 1402, 23:43 عصر
ADO.NET و LINQ to SQL چطور ؟
من از ADO.NET هم استفاده میکنم همین ارور رو میده
کسی نیست جواب بده؟
SajjadKhati
چهارشنبه 30 فروردین 1402, 09:18 صبح
ADO.NET و LINQ to SQL چطور ؟
من از ADO.NET هم استفاده میکنم همین ارور رو میده
سلام
خیلی سئوال تون را خلاصه و بدون بسیاری از جزئیات مورد نیاز مطرح میکنید .
بنابراین کسی هم که قصد جواب دادن هم داشته باشه ، اطلاع چندانی از مشکل تون نداره که بخواد جواب بده .
دادن کد کامل ، حداقل چیزی هست که باید داده بشه .
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.