بهار آموزش با تخفیف های شگفت انگیز توسینسو بهار آموزش با تخفیف های شگفت انگیز توسینسو
مانده تا پایان تخفیف
مشاهده دوره ها
0

مشکل در جمع ستون های sql به وسیله دستور linq درون سی شارپ

سلام دوستان

من یه جدول دارم که بدهکار و بستانکار درونش ثبت میکنم

وبعد وقتی کاربر میخواد ویرایش کنه با پروسیجر به شکل زیر جدول رو آپدیت میکنم

db.up_sanad_item(txt_title.Text.Trim(), Convert.ToInt64(txt_bedehkar.Text.Trim()), Convert.ToInt64(txt_bestankar.Text.Trim()),mid);
db.SaveChanges()

که ردیف mid رو آپدیت میکنه

و بعداز اینکه ذخیره شد میخوام جمع ستون بدهکار و بستانکار رو بگیرم و با دستور زیر میگیرم

long sum_bedehkar = Convert.ToInt64(db.Sanad_Item.Where(c => c.sanadID == mid).ToList().Sum(c => c.Bedehkar));
long sum_bestankar = Convert.ToInt64(db.Sanad_Item.Where(h => h.sanadID == mid).ToList().Sum(h => h.Bestankar));

بار اول که دستور اجرا میشه کامل و درست اجرا میکنه و جمع ستون ها رو میگیره

ولی برای بار دوم و دفعات بعد که اجرا میشه و trace میکنم،دستور پروسیجر اول که مربوط به آپدیت جدول هست،کارمیکنه و درون جدول ثبت میکنه،ولی دو دستور بعدی که برای گرفتن جمع دو ستون هست درست کار نمیکنه، مقادیر جمع قبلی رو برمیگردونه یعنی فقط یکبار این دستور درست اجرا میشه ولی دفعات بعد درست کار نمیکنه

برای مثال درون بدکار 800 و بستانکار 1000 داریم

وقتی کاربر ویرایش میکنه و مقدار 800 رو به هزار عوض میکنه ، اطلاعات به درستی درون جدول اضافه میشه و و جمع این ستون ها هم به درستی برمیگرده(بدهکار=1000،بستانکار=1000) ولی برای بار بعدی که کاربر مقادیر رو عوض میکنه و مثلا 1200 و 800 میده،بازم اطلاعات ثبت میشه ولی جمع ستون ها دوباره 1000 و 1000 برمیگرده

درصورتی که باید 1200 و 800 برگرده

نمیدونم اشکال کارم کجاست

دوستان خواهشا یه راهنمایی کنید

ممنونم

پرسیده شده در 1396/06/25 توسط

2 پاسخ

0

اولا که ToList. نکنید موقع sum!! همون sum کافیه. ایطوری اطلاعات اضافی میگیرید.

دوما دستورتون درسته، شاید شرط where اشتباهه، یا قبل از ذخیره شدن اطلاعات دارید Sum میگیرید.

پاسخ در 1396/06/26 توسط
0

نه شرطم درسته و دستورات linq بعد از دستور آپدیت میادو بعد از ذخیره سازی اقدام به گرفتن اطلاعات میکنم

دستور اول که اجرا شد و قبل اینکه برنامه بره سراغ دستور linq از جدول درون sql یه select میگیرم و تمام اطلاعات به درستی درونش درج شده و بعد که ادامه اجرا رو میرم جمع بدهکار و بستانکار دفعه اول رو میاره

اگه شرط اشتباه باشه باید همون دفعه اول هم اطلاعات اشتباه بیاره

درصورتی که دفعه اول درست میاره و دفعات بعدی همون جواب همون دفعه اول رو برمیگردونه

پاسخ در 1396/06/26 توسط

پاسخ شما