私のコードはこれです:
[HttpGet]
public List<User> GetUsers()
{
List<User> Users;
using (Entities db = new Entities())
{
var users = from u in db.Users select u;
Users = users.ToList();
}
//XXX
return Users;
}
Users
XXX にブレークポイントを設定し、オブジェクトがまだ実際の値でインスタンス化されていることを確認しました。遅延読み込みが実際に何を意味するのかはわかりませんが、確かに読み込みが行われています。しかし、私はまだこのエラーが発生します:
ObjectContext インスタンスは破棄されており、接続を必要とする操作には使用できなくなりました。
なぜこうなった?オブジェクトUsers
は using ブロックの外で宣言されているため、ガベージ コレクターはオブジェクトがまだ使用されていることを追跡するべきではありませんか?
これを処理する方法は何ですか?
わかりました、原因がわかりました。User クラスには、ナビゲーション プロパティ PINS があります。Include メソッドがあることを読みました。ただし、この特定の方法では PINS プロパティは必要ありません。代わりに Exclude メソッドはありますか?
returnステートメントの前に次のことを試しましたが、同じエラーがまだあります。
foreach (var user in Users) user.PINS = null;