1

我是 Entity Framework 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()被调用,我的上下文对于另一个查询就没有用了。

我必须避免这种情况吗?有没有更好的方法来实现这一点?我上面错了吗?

4

1 回答 1

1

你的代码很好。当context超出范围时,列表中的项目不再附加。如果您更改它们,您可以Attach将它们更改为新的上下文。但是还有其他方法取决于你想做什么以及你想怎么做。

调用具体ToList化您的查询,但不会留下一个 open DataReader。所以你应该能够执行多个查询。

于 2012-12-11T00:34:45.443 回答