با سلام و احترام
من با استفاده از transaction اطلاعات رو در دیتابیس ذخیره میکنم. چون باید چندتا تیبل رو باهم پر کنم و ID هر تیبل رو به تیبل دیگه بدم از این روش استفاده می کنم. من با ورود تکی داده ها مشکل ندارم. مشکل اینجاست که این کار توی حلقه کار نمیکنه و خطا میده. لطفا راهنمایی بفرمایید.
اینم نمونه کد من
var transaction = db.Database.BeginTransaction(); try { for (int i = 0; i < model.GDatesArray.Count; i++) { var flightChangePriceInRemain = model.FlightChangePriceInRemain; db.TBL_FlightChangePriceInRemain.Add(flightChangePriceInRemain); db.SaveChanges(); var flightDefaultPricing = model.FlightDefaultPricing; db.TBL_FlightDefaultPricing.Add(flightDefaultPricing); db.SaveChanges(); var flightProPricing = model.FlightProPricing; db.TBL_FlightProPricing.Add(flightProPricing); db.SaveChanges(); var flightEffect = model.FlightEffect; db.TBL_FlightEffect.Add(flightEffect); db.SaveChanges(); var flight = model.Flight; flight.ChangePriceInRemainIdRef = flightChangePriceInRemain.ID; flight.DefaultPricingIdRef = flightDefaultPricing.ID; flight.ProPricingIdRef = flightProPricing.ID; flight.FlightEffectIdRef = flightEffect.ID; flight.FlightMiladiDate = DateTime.Parse(model.GDatesArray[i]); flight.FlightShamsiDate = model.JDatesArray[i]; db.TBL_Flight.Add(flight); db.SaveChanges(); } transaction.Commit(); return Json(true, JsonRequestBehavior.AllowGet); } catch (Exception ex) { transaction.Rollback(); var error = ex.Message; return Json(false, JsonRequestBehavior.AllowGet); }
سلام
مقدار
db.SaveChanges(); را از داخل حلقه خارج کن.
به هزار وصد دلیل وجود این دستور داخل حلقه اشکال دارد
اگه
db.SaveChanges(); رو از حلقه خارج كنم چطوري ID رو بگيرم بدم به جدول آخريه؟
دوست عزیز اگر شما فقط آیدی جدول ثبت شده رو در یک مرحله ماقبل خودش استفاده میکنید این یعنی اینکه شما بین جداولتون ارتباط (ریلیشن) دارید.
اگر این چنین است این چه طرز کار با ef است؟!!!!!!!!!!!!!!!
ممنون از پاسخ شما. بله جداول با ریلیشن به هم ارتباط دارن. میشه یه مثال بزنید که چطور میشه داده ها رو با استفاده از ریلیشن و ترنزکشن ریخت توی چندتا تیبل ؟
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)