0

我了解到实体是代表数据库模式中的表的类。但是在这个链接上,他们谈到了一个被上下文跟踪(附加)的实体

http://msdn.microsoft.com/en-us/data/jj592676.aspx

Added: the entity is being tracked by the context...

他们是否谈到实体框架(即类)的对象/实例被实体框架跟踪?或者从字面上看是实体本身?我很困惑。

在我使用此代码的一个 Web 应用程序中,它是说所有实例FinalStudyDecision都处于修改状态,还是只是对象fsd

context.FinalStudyDecisions.Attach(fsd);
context.Entry(fsd).State = EntityState.Modified;

还是此代码仅针对一个对象执行此操作?

ObjectStateManager.ChangeObjectState(fsd, EntityState.Modified);
4

1 回答 1

1

当实体附加到上下文时,上下文“知道”该对象并开始跟踪其更改。

通常,当从数据库中获取实体时,实体会附加到上下文,例如通过context.FinalStudyDecisions.Single(x => x.Id == 1)(当然,如果存在 Id == 1 的项目)。

但是,如果您有FinalStudyDecisions一个上下文不知道的现有内容,您可以使用该Attach方法使其为人所知。这通常发生在对象被序列化到 Web 客户端并随后从 Web 客户端反序列化时。

如果你将一个对象附加到一个上下文中,它的状态 ( EntityState) 是Unchanged,所以你经常会改变它的状态,Modified当你从一个 web 客户端接收到它时。这将触发 EF 在SaveChanges被调用时存储对象。

两个都

// DbContext API
context.Entry(fsd).State = EntityState.Modified;

// ObjectContext API
ObjectStateManager.ChangeObjectState(fsd, EntityState.Modified);

只改变fsd对象的状态。

重要提示:如果您Add将一个对象添加到上下文中,无论是通过设置其状态Added还是将其添加到DbSet(或ObjectSet),不仅fsd它的所有子对象都会更改为Added.

于 2013-06-02T19:31:08.037 回答