0

可能重复:
DbContext 的内部缓存(?)

我有一个 myDbContext和 aIQueryable的实例,ViewModelBase其中填充BootStrapperIQueryable需要从数据库重新加载几次,我想通过调用一些简单的方法来完成,而不关心查询表达式是什么。

简单来说:

我想在IQueryable<T>不重写表达式的情况下将数据加载到一个中,我拥有的工具是:

1 => 一个IQueryable

2 => 的一个实例DbContext

当我更改数据库中的数据并尝试 IQueryable.ToList() 时,结果不会更新。

IQueryable<Person> ViewModelDataContext;
ViewModelDataContext = repository.GetAll<Person>();
var x = ViewModelDataContext.ToList();
//Some changes into database
repository = new Repository();
var y = ViewModelDataContext.ToList();
//But as result, the x is exactly returns the same result as y and I'd like the y to be updated after  database changes.

有什么建议么?

4

1 回答 1

1

最有可能的是,实体框架每次都(正确地)返回相同的实体实例。这是 ORM 的一个重要特性。未经您的许可,它不会用数据库中的新值覆盖他们的字段。如果这样做,它将导致整个应用程序中出现虚假的状态损坏和非本地副作用。

如果您要使用这种方法加载非实体类型,它将起作用。或阅读有关合并选项的信息。

于 2012-08-12T10:23:12.383 回答