【问题标题】:linq to sql submit changes not workinglinq to sql 提交更改不起作用
【发布时间】:2020-05-12 17:58:44
【问题描述】:

我在 wpf Customername 和 Isvalid 中有一个包含两个列的列表视图。我正在使用 linq to sql 从我的 sql 表中获取数据。当我尝试将值更新到表时,我看不到对表的任何更改表。

这是我点击保存按钮时的代码:

 try
        {
            CustomersDataContext dataContext = new CustomersDataContext();
            Customer customerRow = MyDataGrid.SelectedItem as Customer;
            string m = customerRow.CustomerName;
            Customer customer = (from p in dataContext.Customers
                                 where p.CustomerName == customerRow.CustomerName
                                 select p).Single();

            customer.Isvalid=false;

            dataContext.SubmitChanges();
            MessageBox.Show("Row Updated Successfully.");

        }
        catch (Exception Ex)
        {
            MessageBox.Show(Ex.Message);
            return;
        }

我可以看到我可以根据选择的客户名称查询记录,但值没有更新。

如果有人能指出我缺少将“ISVALID”值更新到数据库的逻辑,我会很高兴。

【问题讨论】:

  • 这里是sql表的设计:CustomerName(nvarchar(MAX)) IsValid(bit)

标签: c# wpf linq-to-sql


【解决方案1】:

首先,您的using(get_datacontext){...} 块在哪里?处理完DataContexts 后,您需要处理掉它们!

无论如何...

我的猜测是更新语句生成的 where 子句过于紧凑,或者完全是错误的。

我将在 Linq to Sql 设计器中检查映射表中每个列的“更新检查”属性。最简单的做法是将主键列设置为Always,并将所有其他列设置为Never。您也可以考虑将它们设置为WhenChanged

设计者的默认行为一般是设置为Always为一切;这不仅会导致可怕的WHERE 更新条款,而且有时还会导致问题。显然,正确的并发检查需要这种行为(即两个线程更新同一行);所以要注意这一点。

哦,想想别的 - 如果你的表没有在设计器中指定主键,你也可以得到这种行为 - 确保其中一列是。

最后可以查看SubmitChanges调用时生成的SQL;通过将 TextWriter 附加到 DataContext.Log 属性;或者同样 VS2010 中的 IntelliTrace 将收集所有运行的 ADO.Net 查询,如果您从调试开始。这对于调试为什么 L2S 的东西没有按预期工作是非常宝贵的。

【讨论】:

  • :sql表中没有主键,设置主键后就可以使用了。
【解决方案2】:

您应该将更新的客户添加到更新的客户列表中。我的意思是在保存更改之前,您应该执行以下操作:db.AddToCustomers(customer)。 AddToCustomers 在 EF 中使用,我完全不知道它在 LINQ 中的等价物。

【讨论】:

  • 您好,欢迎来到 SO :)。您不必告诉 Linq To Sql 您更改了哪些对象;这就是变更跟踪的用途。 我的第一条评论不太愉快,我替换了它;抱歉,今天过的很漫长
  • :)) 不幸的是,当我回答这个问题时,我对更改跟踪一无所知!很抱歉给您带来不便;)
  • 没有不便 :) 希望我没有耽误你回答更多问题!
猜你喜欢
  • 1970-01-01
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多