3

MVC アプリで使用するためにカスタマイズされたいくつかの一般的なメソッドを含むクラスがあり、いくつかの場所で使用しています。以下にいくつかの例を示します。

    private MyEntities db = new MyEntities();


    public List<SelectListItem> GetLocationList()
    {
        var query =
                db.v_LocationsAlphabetical.OrderByDescending(x => x.Category).ThenBy(x => x.LocationName).ToList()
                .Select(x => new SelectListItem
                {
                    Value = x.LocationID.ToString(),
                    Text = x.LocationName
                });

        return (query).ToList();
    }

    public IEnumerable<SelectListItem> GetStates()
    {
        var query = db.States.Select(x => new SelectListItem
        {
            Value = x.Abbr,
            Text = x.Name
        });

        return(query);
    }

    public List<Person> GetPeople()
    {
        var query = db.Person.OrderBy(m => m.LastName).ThenBy(m => m.FirstName).ToList();

        return (query);

    }

これらの各メソッドはデータベースを呼び出してデータを取得しますが、各メソッドに破棄を追加する必要があるかどうか疑問に思っていました。そうでない場合、なぜですか?ありがとう。

4

3 に答える 3

6

各メソッドで dispose を呼び出すべきではありませんdb。これは、メソッド内のローカル変数ではないため、含まれているクラスの有効期間と同じであるためです。

これを処理する一般的な方法は、現在のクラスを作成してメソッドIDisposableを呼び出すことです。db.Dispose()Dispose()

于 2013-06-03T20:39:34.683 に答える
0

いいえ。手動で接続を管理しない限り、DbContext を手動で破棄する必要はありません。したがって、それらの破棄は通常オプションです。

于 2013-06-03T20:35:01.927 に答える