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

C# 实体框架未将数据刷新到数据库,c#,entity-framework,C#,Entity Framework,我正在使用Visual Studio 2012。我在本地数据库中有一个非常简单的Products表(巧妙地命名为Database1)。它有两个字段:id和Name。我预装了一些测试数据 以下代码应更新第一个产品的名称。在内部,它确实如此。我可以检索所有产品,并看到第一个产品的名称是“Shirt”。但更改从未刷新到数据库中。记录永远不会更新。检查数据库会发现名称没有更改 我的问题很简单:为什么不将更改发送到数据库 using (var context = new Database1Entities

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

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

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

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

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

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

编辑:

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

编辑:


代码和输出如下:

这可能意味着您没有跟踪更改,您是否尝试将状态设置为->修改,然后查看它是否正常工作:

var product = products.First();
product.Name = "Shirt";
product.State = EntityState.Modified;
context.SaveChanges();
如果要在上下文中启用它,可以如下操作:

context.Configuration.AutoDetectChangesEnabled = true;

我发现了问题…以及它的解决方案

数据库文件的“Copy to Output Directory”属性设置为“Copy always”。当然,这意味着每次构建应用程序时,都会在Bin目录中放置一个新的副本。修复方法是将其设置为“更新时复制”。Doh


换句话说,更改被持久保存在数据库中,但当应用程序重新构建时,数据库被关闭。

是否确保在上下文中启用了更改跟踪?但是是否更改了任何值?衬衫=衬衫在我看来是一样的…是的,context.Configuration.AutoDetectChangesEnabled=true。另外,我在数据库中预加载的初始值是“Hat”,即使将其设置为“Shirt”,该值仍保留在数据库中。谢谢。“产品”没有“状态”属性。至少我看不到。是的,context.Configuration.AutoDetectChangesEnabled=true。顺便说一下,“SaveChanges()”返回1,我假设它是更新记录的计数。