我正在使用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
答案 0 :(得分:3)
我发现了这个问题及其解决方案。
数据库文件的“复制到输出目录”属性设置为“始终复制”。当然,这意味着每次构建应用程序时,都会在Bin目录中放入一个新副本。解决方法是将其设置为“如果更新则复制”。卫生署。
换句话说,更改被保留在数据库中,但是当应用程序重建时数据库被破坏了。
答案 1 :(得分:2)
这可能意味着您没有跟踪更改,您尝试将状态设置为>修改并查看它是否会起作用:
var product = products.First();
product.Name = "Shirt";
product.State = EntityState.Modified;
context.SaveChanges();
如果你想为上下文启用它,你可以这样做:
context.Configuration.AutoDetectChangesEnabled = true;