Entity framework 实体框架和实体国家

Entity framework 实体框架和实体国家,entity-framework,Entity Framework,如果从实体框架加载实体,并将引用存储在某个位置。实体框架是否保留对对象的跟踪,直到它被处置?您可以随时保存对象的状态吗?(它是如何跟踪的)我们谈论的是应用程序而不是web应用程序。只要数据库上下文存在,就会跟踪实体。这是假设您没有手动分离它 考虑(徒手/伪): 延迟加载将失败,因为您已经处理了上下文及其连接 鉴于考虑: var context = new MyDbContext()) MyEntity entity = context.MyEntities.First(); entity.Pr

如果从实体框架加载实体,并将引用存储在某个位置。实体框架是否保留对对象的跟踪,直到它被处置?您可以随时保存对象的状态吗?(它是如何跟踪的)我们谈论的是应用程序而不是web应用程序。

只要数据库上下文存在,就会跟踪实体。这是假设您没有手动分离它

考虑(徒手/伪):

延迟加载将失败,因为您已经处理了上下文及其连接

鉴于考虑:

var context = new MyDbContext())
MyEntity entity = context.MyEntities.First();

entity.Property1 = "something"; // success

// do loads of stuff

entity.LazyNavigationProperty.Property2 = "something"; // success

context.SaveChanges();

上下文仍处于打开状态,因此将根据需要跟踪和持久化实体。

如果加载实体,将在ObjectStateManager中跟踪该实体,直到释放ObjectContext为止。不过,您可以将其作为无跟踪加载-使用DbContext(或者更准确地说是DbSet),您可以在查询中使用

不要忘记是否使用。因为跟踪实体不在上下文范围内,只会是一个对象,您无法持久化或进行更改。

谢谢您提供的信息!
var context = new MyDbContext())
MyEntity entity = context.MyEntities.First();

entity.Property1 = "something"; // success

// do loads of stuff

entity.LazyNavigationProperty.Property2 = "something"; // success

context.SaveChanges();