我是实体框架4的新手。我已经完成了一些SQL Server和MySQL的工作。我在使用MySQL时遇到了延迟加载的问题,我相信MySQL连接器不允许在同一连接上进行多次查询 - 必须先关闭它。
我想运行一个查询,在我的类的字段中存储对结果的引用,然后再修改/保存它或加载相关数据。但是,背景已超出范围并被处理掉。
class MyClass {
List<AThing> _stuff;
private void ReadStuff() {
using (var context = new MyEntities()) {
_stuff = context.TableOfStuff.ToList();
}
}
// Stuff is used by other methods, bound to controls, etc.
}
那么,Stuff
是否存在没有上下文?根据我的理解,上下文是更改跟踪等的内容......一旦调用ToList()
,我的上下文对另一个查询就没用了。
我必须避免这个吗?有没有更好的方法来实现这一目标?我错了吗?
答案 0 :(得分:1)
你的代码很好。当context
超出范围时,列表中的项目将不再附加。如果您更改它们,则可以Attach
将它们更改为新的上下文。但还有其他方法取决于你想做什么以及你想怎么做。
调用ToList
会使您的查询具体化,但不会打开DataReader
。所以你应该能够执行多个查询。