حذف کردن با Linq

aliireza

عضویت : 1398/04/03 پرسش ها : 2 پاسخ ها : 2

حذف کردن با Linq

ارسال شده در : ‫۷ ماه قبل، یک شنبه ۹ تیر ۱۳۹۸، ساعت ۰۱:۲۰

سلام خسته نباشید 

من تازه دارم ویدیو های شما رو نگاه میکنم الان فصل دوم قسمت 4 هستم تو دفترچه تلفنی که نوشتیم دکمه حذف ش کار نمیکنه ممنون میشم کمکی کنید این خط کد:

private void btnDelete_Click(object sender, EventArgs e)
        {
            if (dgContact.CurrentRow != null)
            {
                string name = dgContact.CurrentRow.Cells[1].Value.ToString();
                string family = dgContact.CurrentRow.Cells[2].Value.ToString();
                string fullName = name + " " + family;

                if (MessageBox.Show($"آیا از حذف {fullName} مطمئن هستید؟", "توجه", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    /**int contactId = int.Parse(dgContact.CurrentRow.Cells[0].Value.ToString());
                    repository.Delete(contactId);
                    BindGrid();**/
                    int contactId = int.Parse(dgContact.CurrentRow.Cells[0].Value.ToString());
                    using (Contact_DBEntities db = new Contact_DBEntities())
                    {
                        MyContact contact = db.MyContacts.Single(c => c.ContactID == contactId);
                    }
                    BindGrid();
                }
            }
            else
            {
                MessageBox.Show("لطفا شخصی را به لیست اضافه کنید", "توجه", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 9428
ارسال شده در :‫۷ ماه قبل، یک شنبه ۹ تیر ۱۳۹۸، ساعت ۰۹:۰۲

سلام 

متن خطا را قرار دهید

0 تشکر

aliireza

عضویت : 1398/04/03 پرسش ها : 2 پاسخ ها : 2
ارسال شده در :‫۷ ماه قبل، یک شنبه ۹ تیر ۱۳۹۸، ساعت ۱۱:۲۰

با break point هم خطا نمیده کلا کار نمیکنه شاید برای این باشه که saveChange() و نزاشتم و کلا از کلمه remove استفاده نشده

الان اینو نوشتم ارور داده

private void btnDelete_Click(object sender, EventArgs e)
        {
            if (dgContact.CurrentRow != null)
            {
                string name = dgContact.CurrentRow.Cells[1].Value.ToString();
                string family = dgContact.CurrentRow.Cells[2].Value.ToString();
                string fullName = name + " " + family;

                if (MessageBox.Show($"آیا از حذف {fullName} مطمئن هستید؟", "توجه", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    int contactId = int.Parse(dgContact.CurrentRow.Cells[0].Value.ToString());
                    using (Contact_DBEntities db = new Contact_DBEntities())
                    {
                        MyContact contact = db.MyContacts.Single(c => c.ContactID == contactId);
                        db.MyContacts.Remove(contact);
                        db.SaveChanges();
                    }
                    /**int contactId = int.Parse(dgContact.CurrentRow.Cells[0].Value.ToString());
                    repository.Delete(contactId);
                    BindGrid();**/
                }
            }
            else
            {
                MessageBox.Show("لطفا شخصی را به لیست اضافه کنید", "توجه", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

 

متن خطا:

System.InvalidOperationException
  HResult=0x80131509
  Message=Sequence contains no elements
  Source=System.Core
  StackTrace:
   at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
   at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__3[TResult](IEnumerable`1 sequence)
   at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
   at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression)
   at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression)
   at System.Linq.Queryable.Single[TSource](IQueryable`1 source, Expression`1 predicate)
   at MyContacts.Form1.btnDelete_Click(Object sender, EventArgs e) in C:\Users\Ali\Desktop\TopLearn\VS\12\MyContacts\MyContacts\Form1.cs:line 70
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   at System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   at System.Windows.Forms.Application.Run(Form mainForm)
   at MyContacts.Program.Main() in C:\Users\Ali\Desktop\TopLearn\VS\12\MyContacts\MyContacts\Program.cs:line 19
 

 

باید یک بار برنامه رو ببندم و باز کنم تا شخصی از لیست حذف شه

درواقع با بروز رسانی پاک میشه

 

من با این روش پاکش کردم نمیدونم استاندارد یا نه؟!!

 

private void btnDelete_Click(object sender, EventArgs e)
        {
            if (dgContact.CurrentRow != null)
            {
                string name = dgContact.CurrentRow.Cells[1].Value.ToString();
                string family = dgContact.CurrentRow.Cells[2].Value.ToString();
                string fullName = name + " " + family;

                if (MessageBox.Show($"آیا از حذف {fullName} مطمئن هستید؟", "توجه", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    int contactId = int.Parse(dgContact.CurrentRow.Cells[0].Value.ToString());
                    using (Contact_DBEntities db = new Contact_DBEntities())
                    {
                        MyContact contact = db.MyContacts.Single(c => c.ContactID == contactId);
                        db.MyContacts.Remove(contact);
                        db.SaveChanges();
                    }
                    BindGrid();
                }
            }
            else
            {
                MessageBox.Show("لطفا شخصی را به لیست اضافه کنید", "توجه", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

0 تشکر

برای ارسال پاسخ باید وارد شوید و یا در سایت عضو شوید