实体框架持久化本地范围变量?

时间:2010-02-26 17:06:37

标签: c# linq entity-framework

大家好我有以下方法:

var usuario;

            usuario = UniapontaService.GetUsuarioUniapontaPlanejamentoEstrategico(x => x.IdUsuario == VWUsuarioUniaponta.IdUsuario &&
                      x.PlanejamentoEstrategico.IdPlanejamentoEstrategico == HorarioTrabalhoCorrente.PlanejamentoEstrategico.IdPlanejamentoEstrategico);

            TxtTotalHorasMes.Text = usuario.QuantidadeHorasDisponivelMes.ToString();

            usuario = null;

当执行此方法,然后再次执行它时,似乎EF或其他东西正在缓存第一个查询的值: 例子:通过方法,查询为25的usuario,然后我在执行中设置null(这是一个测试),甚至在数据库中更改该值,当它再次传递此方法时,变量仍然是25 ....当我在另一个方法中保存更改时,它会尝试从另一个方法中保存usuario。这似乎是错误的,因为变量范围是本地的而不是全局的 问题是,当方法结束时,它不应该破坏该变量? 我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:2)

EF的ObjectContext跟踪它加载的对象。如果再次询问对象,它会为您提供之前给出的相同实例(而不是副本)。

http://msdn.microsoft.com/en-us/library/bb896269.aspx

ObjectContext实例是这些实例的范围。如果要启动新的UnitOfWork,则应该从新的ObjectContext开始。