如果从Entity Framework加载实体并将引用存储在某处。实体框架是否会跟踪对象的跟踪,直到它被处置?你能随时保存对象的状态吗? (它如何跟踪它)我们正在谈论的应用程序而不是Web应用程序。
答案 0 :(得分:1)
如果加载实体,它将在ObjectStateManager中跟踪,直到放置ObjectContext。您可以加载为无跟踪 - 使用DbContext(或更正确的DbSet),您可以在查询中使用.AsNoTracking
答案 1 :(得分:1)
不要忘记,如果你使用.AsNoTracking,你的实体不在上下文中,只是一个对象,你不能坚持或做出改变。
答案 2 :(得分:0)
只要您的数据库上下文存在,就会跟踪该实体。这是假设您不手动分离它。
考虑(写意/伪):
MyEntity entity;
using (var context = new MyDbContext())
{
entity = context.MyEntities.First();
}
entity.Property1 = "something"; // success
entity.LazyNavigationProperty.Property2 = "something"; // fail
延迟加载将失败,因为您已经处理了上下文及其连接。
考虑:
var context = new MyDbContext())
MyEntity entity = context.MyEntities.First();
entity.Property1 = "something"; // success
// do loads of stuff
entity.LazyNavigationProperty.Property2 = "something"; // success
context.SaveChanges();
上下文仍然是开放的,因此将按需跟踪和保留实体。