SaveChanges不保存更改

时间:2011-06-08 00:16:44

标签: c# entity-framework savechanges

我有一个应用程序使用EF按预期加载所有数据,但是,当涉及到保存时,我根本无法使用它。

我开始时很简单,只需使用组合框中的值来改变数据库中的1个字段。当值改变时,它执行

this.t.Incident.AssignedTeamID = (int)this.cbTeam.SelectedValue;

我还确认这会将EntityState更改为Modified,并且该值正是我所期望的。尽管如此,请致电

hdb.SaveChanges();

不会将任何内容保存回数据库。我知道这可能是我想念的简单事情,但我无法找到它本来就是什么。

更新 在使用SaveChanges之前添加hdb.context.Attach(this.t.Incident);会导致InvalidOperationException声明“ IEntityChangeTracker的多个实例无法引用实体对象。

如果它有所不同,这是桌面应用程序,而不是Web应用程序

2 个答案:

答案 0 :(得分:2)

最有可能的是,由于您正在使用Web应用程序,因此您遇到了断开连接的对象上下文的问题。对于所有ORM,您必须通过附加过程来更新实体。 SaveChanges永远不会在请求/响应的两端工作。

答案 1 :(得分:0)

感谢发布在这里的所有人。阅读这些细节后,答案非常简单。

正如Damien对原始问题所评论的那样,我需要做的是确保它全部来自同一个班级。 我当前在需要的时候创建了一个DB的私有实例,而没有真正思考。这很好,它按照我的预期加载了数据,但意味着我将通过不同的类加载大约3个不同的数据库实例。

基本上,我试图使用不同的数据库实例从不同的类中保存对象。将save方法移回到它创建的类(可能就像它应该一直一样)解决了这个问题。