【问题标题】:Why isn't my SubmitChanges() working in LINQ-to-SQL?为什么我的 SubmitChanges() 不能在 LINQ-to-SQL 中工作?
【发布时间】:2009-02-25 14:55:57
【问题描述】:

我在 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 (???)

}

【问题讨论】:

  • 这是一个非常愚蠢的问题,但您在客户表上有一个主键,对吗?
  • 是:ID 是主键,不允许 NULL,并且身份规范设置为 IsIdentity=Yes。我用 Visual Studio 创建了 .MDF 文件。

标签: linq-to-sql


【解决方案1】:

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

【讨论】:

  • 我刚刚经历了这个,它似乎是正确的。附加到 MDF 的 bin/debug 副本,您将看到更改。
  • 宾果游戏,就是这样!感谢大家的坚韧
  • 我只知道,因为我以前花了好几个小时来追逐同样的东西。我可以帮忙。
  • @Micah,你的回答对我也有帮助。但我有点难过,因为我没有像你那样花几个小时,我可能会忘记这一点。
  • 如果我们仍然想使用本地 db .mdf 方法,解决方案是什么?任何可靠的解决方案?
【解决方案2】:

确保您的 _db 在检索和更改之间的任何时候都不会重置为新的上下文,如果这就是问题所在。您还可以通过执行TheListBox.ItemsSource = _db.Customers; 来简化数据源的分配。我在当前代码中有很多地方都在做你所描述的事情,并且这些变化传播得很好。另一个建议,在您的上下文中设置日志记录(将_db.Log 设置为某个作家,我通常使用Console.Out,这样我可以在调试时观察输出窗口中的变化),这样您就可以看到实际发生的变化拨打SubmitChanges()

【讨论】:

  • 我输入了 _db.Log = Console.Out;在 submitchanges 行之前,它没有显示在我的输出窗口中,或者它应该在哪里输出?
  • 好的,我现在最大限度地简化了代码,它只是获取对象,更改它们并使用 SubmitChanges 将它们保存回来,但数据库仍然没有更改它们。知道为什么会这样吗?
  • 您是否在调试模式下运行?您是否在 Tools->Options->Debugging->General 中选中了“将所有输出窗口文本重定向到即时窗口”选项?如果是这样,您的输出将转到即时窗口,否则请尝试围绕 StringBuilder 设置您自己的 TextWriter 并设置 Log。
  • 还要确保您的输出窗口在“调试”上选择了“显示输出:”
  • 试过这个:db.Log = new System.IO.StreamWriter(@"App_Data\linq.log") { AutoFlush = true } 但它不会创建文件。嗯。
猜你喜欢
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多