我了解到实体是表示数据库模式中的表的类。但是在这个链接上,他们谈到了被上下文跟踪(附加)的实体
http://msdn.microsoft.com/en-us/data/jj592676.aspx
Added: the entity is being tracked by the context...
他们是否谈到实体框架跟踪的实体的对象/实例(所以类)?或者从字面上看实体本身?我很困惑。
在我的一个网络应用程序中,我使用的是此代码,它是说FinalStudyDecision
的所有实例都处于修改状态,还是只是对象fsd
?
context.FinalStudyDecisions.Attach(fsd);
context.Entry(fsd).State = EntityState.Modified;
或者这段代码只为一个对象做了吗?
ObjectStateManager.ChangeObjectState(fsd, EntityState.Modified);
答案 0 :(得分:1)
当实体附加到上下文时,上下文“知道”该对象并开始跟踪其更改。
通常,实体在从数据库中提取时附加到上下文,例如,按context.FinalStudyDecisions.Single(x => x.Id == 1)
(如果有一个项目当前ID == 1)。
但是如果你有一个上下文不知道的现有FinalStudyDecisions
,你可以使用Attach
方法让它知道。这通常发生在将对象序列化并随后从Web客户端反序列化时。
如果您将某个对象附加到某个上下文,其状态(EntityState
)为Unchanged
,那么当您从Web客户端收到该状态时,通常会将其状态更改为Modified
。这将触发EF在调用SaveChanges
时存储对象。
两个
// DbContext API
context.Entry(fsd).State = EntityState.Modified;
和
// ObjectContext API
ObjectStateManager.ChangeObjectState(fsd, EntityState.Modified);
仅更改fsd
对象的状态。
重要提示:,如果您 Add
上下文的对象,可以通过设置其状态Added
或将其添加到{{ 1}}(或DbSet
),不仅ObjectSet
,而且其所有子对象都更改为fsd
。