实体框架未将数据刷新到数据库
本文关键字:刷新 数据库 数据 框架 实体 | 更新日期: 2023-09-27 18:17:01
我使用的是Visual Studio 2012。我在本地数据库(巧妙地命名为Database1)中有一个非常简单的Products表。它有两个字段:id和Name。我预装了一些测试数据。
下面的代码应该更新第一个Product的Name。在内部,确实如此。我可以检索所有产品,看到第一个产品的名称是"衬衫"。但是更改永远不会刷新到数据库中。该记录永远不会更新。检查数据库发现名称没有更改。
我的问题很简单:为什么更改没有被发送到数据库?
using (var context = new Database1Entities())
{
var products = context.Products;
products.First().Name = "Shirt";
context.SaveChanges();
}
提前感谢。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
编辑:我尽了最大的努力在这里输入完整的代码并输出。但是,无论我做什么,我仍然得到"您的帖子似乎包含未正确格式化的代码"的错误消息。30分钟后我就放弃了。
编辑:代码和输出如下:http://pastebin.com/GmQtwAND
我发现了这个问题…以及它的解
数据库文件的"Copy to Output Directory"属性设置为"Copy always "。当然,这意味着每次构建应用程序时,都会将一个新的副本放入Bin目录中。解决方法是将其设置为"如果更新则复制"。哎。
换句话说,更改被持久化到数据库中,但是当重新构建应用程序时,数据库被破坏了。
这可能意味着你没有跟踪更改,不如试着将State设置为-> Modified,看看它是否会起作用:
var product = products.First();
product.Name = "Shirt";
product.State = EntityState.Modified;
context.SaveChanges();
如果你想在上下文中启用它,你可以这样做:
context.Configuration.AutoDetectChangesEnabled = true;