PDA

View Full Version : سوال: مشکل حذف در Entity Framework



ghasem110deh
دوشنبه 15 تیر 1394, 16:12 عصر
سلام به همه ...
(اون تاپیک قبلی قفل شد ، تاپیک جدید زدم)
----------------------------------------------
دوستان من واسه حذف یک سطر بر حسب آیدی اون (سطر از گریدویو) اینطور عمل کردم (عکس ضمیمه)
حذف هم انجام میده ولی سطر اول و دوم رو موقع حذف خطا میده !!!

اینم کد خوندن سطر از گریدویو :


new Ostad_Bll().delete(Convert.ToInt32(dataGridView1.S electedCells[0].Value.ToString()));

ghasem110deh
دوشنبه 15 تیر 1394, 16:12 عصر
این روش هم باز همون مشکل رو داره :


public int Ostad_Delete(int Id)
{
var return_value = 0;
// var Del = Con.Ostad.Where(a => a.O_Id == Id);
var Del = from d in Con.Ostad where d.O_Id == Id select d;
if (Del.Count() != 0)
{
// Con.Ostad.Remove(Del.Single());
Ostad delete_os = Del.First();
Con.Ostad.Remove(delete_os);
Con.SaveChanges();
}
return return_value;
}

davidrobert
دوشنبه 15 تیر 1394, 17:38 عصر
بفرمایید این هم کد پاک کردن.با اینتیتی.
void delete()
{
if (dgv1.CurrentRow == null)
{
return;
}
try
{
DialogResult dr;
dr = MessageBoxShow.Show("حذف مورد انتخابی باعث حذف اطلاعات با این کد اشخاص خریدار میشود.", "هشدار حذف", MessageBoxShow.Buttons.YesNo, MessageBoxShow.Icons.Question);
if (dr == DialogResult.Yes)
{
double id = Convert.ToInt64(TxtCodeBank.Text);
var q = db.Tbl_code_bank.Where(a => a.CB_Code_bank == id);
if (q.Count() != 0)
{
db.Tbl_code_bank.Remove(q.Single());
db.SaveChanges();
}
}
Frm_Bank_Load(null, null);
// NewText();
ShowInfo();
}
catch (Exception ex)
{
ClsShowMessageBoxError.Error(102, "139 \n" + ex.Message, "");
}
}

ghasem110deh
دوشنبه 15 تیر 1394, 20:53 عصر
یحتمل با گرید ویو مشکل دراه ...

همه سطر ها حذف میشن بجز سطر 1 و 2 گریدویو !!!

Mahmoud.Afrad
دوشنبه 15 تیر 1394, 23:33 عصر
ربطی به دیتاگرید نداره، اگر دقت کنی تا save تغییرات در دیتابیس پیش میره ولی موفق نیست.
احتمال میدم جدول استاد با جدول دیگری رابطه داره در اینصورت با حذف استاد اطلاعات وابسته باعث ایجاد استثناء میشن.
به چه صورت مدل entity رو ایجاد کردی. ef code first, database first و ... ؟

ghasem110deh
دوشنبه 15 تیر 1394, 23:47 عصر
والا من این رو انتخاب میکنم (عکس ضمیمه)
استاد با جدول درس رابطه داره ، اگه ایراد از اینه چرا فقط این دو تا سطر حذف نمیشن !؟
.
.
.
یه مشکل دیگه اینه که خیلی حجم پروژه میره بالا (الان پوشه دیباگ این پروژه 47 مگ شده)

Mahmoud.Afrad
سه شنبه 16 تیر 1394, 01:20 صبح
چون این دو عدد از جدول استاد ، در جدول درس به عنوان کلیدخارجی ثبت شدن (این دو استاد دارای درس هستند)
جایی که ارتباط بین دو جدول رو تعیین کردی، update , insert specification را روی cascad بزار. در این صورت با حذف استاد از جدول استاد، اطلاعات وابسته اون استاد هم از جدولهای دیگر حذف میشن.
http://stackoverflow.com/questions/4454861/how-do-i-edit-a-table-in-order-to-enable-cascade-delete

در کل توصیه میکنم اطلاعاتی از دیتابیس delete نکنید. میتونید یک ستون(برای ثبت وضعیت) از نوع bit برای این منظور به جدول اضافه کنید که در صورت نیاز به حذف مقدارش رو به false تغییر بدید و برای نمایش اطلاعات ، سطرهایی رو واکشی کنید که فیلد مورد نظر true هست.

ghasem110deh
سه شنبه 16 تیر 1394, 13:00 عصر
ممنون :)
الان درست شد !



در کل توصیه میکنم اطلاعاتی از دیتابیس delete نکنید. میتونید یک ستون(برای ثبت وضعیت) از نوع bit برای این منظور به جدول اضافه کنید که در صورت نیاز به حذف مقدارش رو به false تغییر بدید و برای نمایش اطلاعات ، سطرهایی رو واکشی کنید که فیلد مورد نظر true هست.

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

امام خودم دوس دارم اینو ... حالا که پیش نهاد دادین روش کار میکنم !

xsbehx
سه شنبه 16 تیر 1394, 13:18 عصر
در کل توصیه میکنم اطلاعاتی از دیتابیس delete نکنید. میتونید یک ستون(برای ثبت وضعیت) از نوع bit برای این منظور به جدول اضافه کنید که در صورت نیاز به حذف مقدارش رو به false تغییر بدید و برای نمایش اطلاعات ، سطرهایی رو واکشی کنید که فیلد مورد نظر true هست.

سلام
می شه دلیل حذف نکردنش رو بگید؟