为什么我的SubmitChanges()不能在LINQ-to-SQL中工作?

时间:2009-02-25 14:55:58

标签: linq-to-sql

我在WPF应用程序中创建了一个.MDF数据库。

然后我生成了LINQ-to-SQL类,并使用LINQ获取所有客户。

然后我会浏览它们并更改每个姓氏。

但是,当我调用SubmitChanges时,数据库保持不变

我认为这是SubmitChanges()的目的,是为了向数据库提交更改吗?

我缺少什么,如何“将更改”提交回我的数据库?

public Window1()
{
    InitializeComponent();

    Main2DataContext _db = new Main2DataContext();
    var customers = from c in _db.Customers
                    select c;

    foreach (var customer in customers)
    {
        customer.LastName = "CHANGED lastname"; //ListBox shows changes 
    }

    _db.SubmitChanges(); //does NOT save to database (???)

}

2 个答案:

答案 0 :(得分:15)

我想我知道问题所在。您使用的是本地.mdf文件吗?如果是这种情况,请检查bin / debug文件夹。我打赌你有一个数据库在里面有变化。我认为你的项目中有一个.mdf文件,每次构建时都会将其复制到bin / debug文件夹中。因此,更改将保存到副本中,并且您没有看到它直接反映在项目中的副本中。

答案 1 :(得分:2)

确保您的_db在检索和更改之间的任何时候都没有重置到新的上下文,如果这样就好了。您还可以通过TheListBox.ItemsSource = _db.Customers;简化数据源的分配。我在当前代码中有很多地方,我正在完成您所描述的内容,并且更改正在传播。另外一个建议,设置登录上下文(将_db.Log设置为某个编写器,我通常使用Console.Out,这样我可以在调试时观察输出窗口中的更改),这样您就可以看到实际的更改当你致电SubmitChanges()时会发生。