1

私はEntityFramework4を初めて使用します。SQLServerと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 に答える