PDA

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



javad.jaddi
یک شنبه 26 شهریور 1396, 13:21 عصر
سلام دوستان
من یه جدول دارم که بدهکار و بستانکار درونش ثبت میکنم
وبعد وقتی کاربر میخواد ویرایش کنه با پروسیجر به شکل زیر جدول رو آپدیت میکنم

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 برگرده
نمیدونم اشکال کارم کجاست
دوستان خواهشا یه راهنمایی کنید
ممنونم

ژیار رحیمی
یک شنبه 26 شهریور 1396, 21:59 عصر
بعد از ذخیره تغییرات مجدد تغییرات انجام شده در دیتابیس به کانتکست اعمال کنید.یه راه ساده برای انجام تغییرات مجدد new کردن متغییر Context هست

db.SaveChanges();
//نام کلاس دیتاکانتکست موجود در پروژه را جایگزین کن
db=new DatabaseContext();