PDA

View Full Version : شرایط cascade حذف



ali_72
شنبه 16 آبان 1394, 07:09 صبح
سلام
دوستان من جداول زیاد مرتبط با هم دارم
مثلا جدول استان با جدول شهرستان و جدول شهرستان با جدول کاربر و جدول کاربر با جدول حسابداری و فاکتور و جدول محصولات با جدول فاکتور و .....
ارنباط دارد

در این حالت من حذف این جدول ها رو cascade گذاشتم
در این صورت با حذف استان اطلاعات زیادی حذف میشه
یا با حذف کاربر اطلاعات اسناد حسابداری و ... از دست میره

در غیر اینصورت (cascade نکردن حذف) ما اطلاعاتی داریم که نمیدونیم متعلق به کیه. و در لود اطلاعات هم دچار خطا میشیم

شما هم همین کار رو انجام میدهید؟

احساس میکنم باید موارد بیشتری رو در نظر بگیرم :اشتباه:

الان خود کاربر بهم گفته که این cascade حذف باشه ولی مثلا با حذف استان به اشتباه چه اطلاعات مهمی از دست میره

در ضمن چطور میشه برای cascade حذف و ویرایش در entity شرط گذاشت؟

من از این کد برای cascade حذف استفاده میکنم:


modelBuilder.Entity<GoroheMahsolat>().HasMany(x => x.Mahsolat).WithRequired(x=>x.GoroheMahsolat).WillCascadeOnDelete(true);



لطفا راهنمایی کنید
ممنون

hakim22
شنبه 16 آبان 1394, 12:37 عصر
شما نباید امکان حذف رو به ردیفی بدی که زیر مجموعه داره .

هر وقت زیر مجموعه داشت از کاربر بخواهید که ابتدا تکلیف زیر مجموعه هارو مشخص کنه (اونها حذف کنه یا به زیر مجموعه دیگه ای منتقل کنه)

یا امکان وجود زیر مجموعه با مجموعه ی null بزارید. در هر صورت Casecading خیلی وقتها اثر منفی روی پروژه میزاره و غیر فعال بشه بهتره.

ali_72
شنبه 16 آبان 1394, 14:39 عصر
سلام
ممنون از توضیحاتتون
من به کاربر این موارد رو توضیح دادم اما گفت با توجه به تعداد زیاد رکورد تکلیف معیت کردن برای این سری اطلاعات زیاد براش سخته و ترجیح میده cascade باشه
اما قضیه اینه که وقتی خراب کاری میکنن تازه یادشون میافته آدم چی گفت بهشون

من نمیخوام موقع حذف به هر کدوم از جداول مجدد کوئری آپدیت بزنم
از طریق خود entity چه طوری میتونم کدنویسی کنم که این قضیه حذف در جداولی که ارتباط دارن دردسر ساز نشه
تعداد رکوزدها زیاده
پنل مدیریت چندین کاربر مدیر داره
و این جداول که مثال زدم تنها چند مثال بود
جداول بزرگ با اطلاعات زیاد دارم

ممنون میشم تجربیاتتون ور بفرمائید و منو راهنمایی کنید