ورود

View Full Version : سوال: ویرایش یک یا چند فیلد در پایگاه داده



kamran_14
سه شنبه 16 مرداد 1397, 07:30 صبح
سلام
خسته نباشید
چرا برای ویرایش پایگاه، علاوه بر تغییر فیلد، 2 دستور زیر رو هم مینویسند (منظورم تابع Attach و Entry(q).State است)


q2.Confirm =true;q2.tblUser.RoleId = 3;
oDB.tblIdentities.Attach(q2);
oDB.Entry(q2).State = System.Data.Entity.EntityState.Modified;
oDB.SaveChang();

nunegandom
پنج شنبه 18 مرداد 1397, 00:27 صبح
با سلام
والله من Attach رو نمینویسم و فقط قسمت Entry رو مینویسم و درست کار میکنه
در قسمت Entry شما میاید و موجودی که تغییر دادی (کلاسی که آبجکت q2 رو ساختید) رو Entity Framework میدید و از روی نوعش پیدا میکنه که با کدوم جدول کار دارید و از روی خصوصیاتش(properties) میاد و تغییرات رو اعمال میکنه زمانی که State رو Modified بهش اعلام کردید
SaveChanges هم که میاد میگه ذخیره کن هر چی که هست رو

hakim22
پنج شنبه 18 مرداد 1397, 08:41 صبح
از دستور Attach برای متصل کردن اطلاعات به سیستم رهگیری EF استفاده میشه. EF دارای یک سیستم Change Tracking هست که تغییرات اطلاعات رو به صورت موقت در حافظه نگه میداره. شما می توانید تغییرات اطلاعات رو به اون ارسال کنید و بعدا به صورت یکجا در دیتابیس ذخیره کنید.

استفاده از Attach ضرورتی نداره. مخصوصا اگر قصد دارید اطلاعات رو بلافاصله ذخیره کنید. اگر می خواهید مجموعه ای از تغییرات رو جمع کنید و بعدا ذخیره کنید Attach به کار میاد.

استفاده از Entry.State روشی هست که رفت و آمد به دیتابیس کم بشه. معمولا شما ابتدا یک رکورد رو از دیتابیس پیدا می کنید و بعد تغییر میدهید و بعد ذخیره می کنید. با استفاده از روش State شما تغییرات رو اعمال می کنید و لازم نیست ابتدا شی رو پیدا کنید. خود EF از روی کلید اصلی شی رو پیدا می کنه و همزمان تغییر میده.

kamran_14
چهارشنبه 24 مرداد 1397, 21:09 عصر
وقتی فقط مقدار فیلد رو تغییر میدیم، جدول ویرایش میشه دیگه چه نیازی به state هست