Способы обновления только измененных столбцов в таблице с помощью LINQ - PullRequest
1 голос
/ 21 сентября 2011

У меня есть 20 полей в форме, как обновить поля, измененные пользователем во время выполнения, и как проверить, какие поля были изменены, чтобы я мог обновлять только те значения в таблице, используя LINQ. Я работаю над приложением Windows, используя C # и VS2010

Пожалуйста, обратитесь к коду (в настоящее время я передаю все значения, я знаю, что это не правильный путь)

    private void UpdateRecord(string groupBoxname)
        {
            using (SNTdbEntities1 context = new SNTdbEntities1())
            {
                {
                    Vendor_Account va = new Vendor_Account();                    

                    var Result = from grd in context.Vendor_Account
                                 where grd.Bill_No == dd_billNo.Text
                                 select grd;

                    if (Result.Count() > 0)

                        if ((dd_EditProjectName.Text!= "Select") && (dd_billNo.Text!="Select") && (dd_editVendorName.Text!="Select"))
                        {
                            foreach (var item in Result)
                            {
                                va.Account_ID = item.Account_ID;
                            }
                            va.Amount_After_Retention = Convert.ToDecimal(txt_AD_AfterRet.Text);
                            va.Balance = Convert.ToDecimal(txt_AD_Balance.Text);
                            va.Bill_Amount = Convert.ToDecimal(txt_AD_BillAmount.Text);
                            va.Bill_Date = Convert.ToDateTime(dt_AD_BillDate.Text);
                            va.Bill_No = dd_billNo.Text;
                            va.Comments = txt_AD_Comments.Text;
                            va.Paid_Till_Date = string.IsNullOrEmpty(txt_AD_Paid.Text)?0:Convert.ToDecimal(txt_AD_Paid.Text);
                            va.Project_Name = dd_EditProjectName.Text;
                            va.Retention_Perc = Convert.ToDecimal(txt_retPerc.Text);
                            va.Amount_After_Retention = Convert.ToDecimal(txt_AD_AfterRet.Text);
                            va.Vendor_Name = dd_editVendorName.Text;
                            va.Vendor_Code = txt_AD_Code.Text;

                            context.Vendor_Account.ApplyCurrentValues(va);
                            //context.Vendor_PersonalInfo.AddObject(vpi);
                            context.SaveChanges();
                            MessageBox.Show("Information Updated Sucessfully!");
                            lbl_Warning.Text = "";
                            entityDataSource1.Refresh();
                        }

                        else
                        {
                            MessageBox.Show("Vendor Name,Project Name and Bill No cannot be blank!!");
                        }               

                }               

            }
        }

Ответы [ 2 ]

2 голосов
/ 21 сентября 2011

Entity Framework выполнит эту задачу. Поскольку вы не предоставили никакого кода, я не могу быть точным в отношении ответа, но, пожалуйста, проверьте эти ссылки:

http://msdn.microsoft.com/en-us/library/aa697427(v=vs.80).aspx, раздел: Управление данными и постоянные изменения

http://www.codeproject.com/KB/database/sample_entity_framework.aspx

Обратите внимание, что функция SaveChanges () обновит все изменения, внесенные в записи в EF.

0 голосов
/ 21 сентября 2011

Создайте несколько дубликатов полей и сравните значение из элемента формы с локальным дубликатом, если он был изменен, чем обновите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...