1

我有一个应用程序可以使用 EF 按预期加载所有数据,但是,在保存时,我根本无法让它工作。

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

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

我还确认这改变了EntityStatetoModified并且该值是我所期望的。尽管如此,调用

hdb.SaveChanges();

不会将任何内容保存回数据库。我知道这可能是我缺少的一些简单的东西,但我根本不知道那是什么。

更新:hdb.context.Attach(this.t.Incident);在使用 SaveChanges 之前 添加会导致InvalidOperationException一个实体对象不能被多个 IEntityChangeTracker 实例引用。

如果有任何区别,这是一个桌面应用程序,而不是一个 Web 应用程序

4

2 回答 2

2

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

于 2011-06-08T01:03:00.850 回答
0

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

正如 Damien 对原始问题的评论,我需要做的是确保所有内容都是从同一个类中加载的。我目前在需要时创建了一个数据库的私有实例,而没有真正考虑。这很好,它按我的预期加载了数据,但这意味着我将通过不同的类加载大约 3 个不同的数据库实例。

本质上,我试图用不同的数据库实例从不同的类中保存对象。将 save 方法移回创建它的类(大概应该一直如此)解决了这个问题。

于 2011-06-08T09:57:51.303 回答