4

我正在使用 Visual Studio 2012。我在本地数据库中有一个非常简单的 Products 表(巧妙地命名为 Database1)。它有两个字段:id 和 Name。我预加载了一些测试数据。

以下代码应更新第一个产品的名称。在内部,它确实如此。我可以检索所有产品并看到第一个产品的名称是“衬衫”。但是更改永远不会刷新到数据库中。记录永远不会更新。检查数据库显示名称没有更改。

我的问题很简单:为什么没有将更改发送到数据库?

using (var context = new Database1Entities())
{
    var products = context.Products;

    products.First().Name = "Shirt";
    context.SaveChanges();
}

提前致谢。

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- =-=-=-=-=-=-=-=-=-=-=-=

编辑:

我尽力在这里输入完整的代码并输出。但是,无论我做什么,我都会继续收到“您的帖子似乎包含格式不正确的代码”错误消息。30分钟后我放弃了。

编辑:

代码和输出在这里: http: //pastebin.com/GmQtwAND

4

2 回答 2

3

我发现了这个问题......及其解决方案。

数据库文件的“复制到输出目录”属性设置为“始终复制”。当然,这意味着每次构建应用程序时,都会在 Bin 目录中放置一个新副本。解决方法是将其设置为“如果更新则复制”。多哈。

换句话说,更改一直保存在数据库中,但是当应用程序重建时,数据库被破坏了。

于 2013-06-06T15:19:24.803 回答
2

那么这可能意味着您没有跟踪更改,您尝试将 State 设置为 -> Modified 并查看它是否会起作用:

var product = products.First();
product.Name = "Shirt";
product.State = EntityState.Modified;
context.SaveChanges();

如果你想为上下文启用它,你可以这样做:

context.Configuration.AutoDetectChangesEnabled = true;
于 2013-06-05T03:41:54.877 回答