如果您从 Entity Framework 加载实体并将引用存储在某处。实体框架是否会跟踪对象直到它被处置?你可以随时保存对象的状态吗?(它如何跟踪它)我们谈论的是应用程序而不是 Web 应用程序。
问问题
98 次
3 回答
1
如果您加载一个实体,它将在 ObjectStateManager 中被跟踪,直到 ObjectContext 被释放。您可以加载是因为没有跟踪 - 您可以.AsNoTracking
在查询中使用 DbContext(或更正确的 DbSet)
于 2013-03-22T20:28:44.933 回答
1
如果您使用 .AsNoTracking,请不要忘记您的实体不在上下文中,并且只是一个对象,您无法持久保存或进行更改。
于 2013-11-18T03:18:59.937 回答
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();
上下文仍然是打开的,因此实体将被跟踪并按需保留。
于 2013-03-22T20:26:49.047 回答