实体框架4 - 防止基本缓存

Ada*_*kis 10 entity entity-framework-4

如果我有一个实体框架4上下文,通常如果我运行了如下查询:

db.Invoices.Where(I => whatever);
Run Code Online (Sandbox Code Playgroud)

然后再运行其他东西:

db.Invoices.Where(I => something_else);
Run Code Online (Sandbox Code Playgroud)

从第一个查询返回的任何对象也将从数据库中加载.EF将只获取该密钥已有的对象.

问题,关闭此功能的最佳方法是什么?我可以告诉EF从数据库加载它所需的每个对象,毫无例外吗?

谢谢!

Sim*_*ele 9

您需要更改实体的MergeOption设置,例如

db.Invoices.MergeOption = MergeOption.OverwriteChanges;
Run Code Online (Sandbox Code Playgroud)

OverwriteChanges表示始终从数据源加载对象.您还可以使用NoTracking完全禁用跟踪,如果您不需要更新数据或重新使用查询,则可以提高性能.默认值是AppendOnly您观察到的行为.