实体框架未将数据刷新到数据库

本文关键字:刷新 数据库 数据 框架 实体 | 更新日期: 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;