2

ObjectListViewを使用してデータベース情報を視覚化する小さなプログラムがあります。現在、私はアイテムを追加しようとしており、下The operation cannot be completed because the DbContext has been disposed.の行を強調表示しているアイテムを取得し続けていolvEntityTypes.AddObject(et);ます。

コード:

string typeName = tbTypeName.Text;
string desc = tbDesc.Text;

EntityTypes et;
using (FCERTSModelContainer db = new FCERTSModelContainer())
{
    // Create and save new row for the EntityTypes table.
    et = new EntityTypes { EntityTypeName = typeName, Description = desc };
    db.EntityTypes.Add(et);
    db.SaveChanges();

    olvEntityTypes.AddObject(et);
}
  • SaveChanges()コンテキストも閉じているのではないか と思いましたが、変更を保存する前にオブジェクトを追加しようとすると、同じエラーがスローされます。
  • olvEntityTypes.AddObject(et);ブロックの外に置くのusingも失敗です。
  • 次のような方法でデータベースにクエリを実行しても、エラーはスローされません。

コード:

var query = from ent in db.EntityTypes
            orderby ent.EntityTypeName
            select ent;

olvEntityTypes.SetObjects(query);

だから、なぜこれがエラーをスローしているのか、そしてそれを修正する方法について、私は今少し途方に暮れています.

4

1 に答える 1

3

問題は、objectlistviewのオブジェクトの初期設定であることが判明しました。私はこのコードを使用していました。

var query = db.EntityTypes.OrderBy(eg => eg.EntityTypeName);
olvEntityTypes.SetObjects(query);

これは正常に機能しますが、コードベースの別のusingブロックにあるため、完全に異なるDbContextです。

クエリをリストに変換してから呼び出すとSetObjects()、プログラム全体が問題なく動作します。

于 2013-01-23T06:37:35.603 に答える