实体框架不会将数据刷新到数据库

时间:2013-06-05 03:30:26

标签: c# entity-framework

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

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

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

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

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

提前致谢。

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

编辑:

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

编辑:

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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

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

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

context.Configuration.AutoDetectChangesEnabled = true;