我的代碼是這樣的:ObjectContext的實例已經被佈置,但我已經複製了對象
[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;
}
我把一個斷點XXX並確認該物體Users
仍與實際值實例化。我不知道Lazy Loading實際上意味着什麼,但確實發生了一些負載。但我仍然得到這個錯誤:
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
爲什麼會發生這種情況?對象Users
在using塊之外被聲明,所以垃圾回收器不應該跟蹤對象仍在使用中嗎?
處理這個問題的方法是什麼?
好的,我找到了原因。用戶類具有導航屬性PINS。我讀過有一個包含方法。但是PINS屬性在這個特定的方法中不是必需的。是否有排除方法?
我在return語句之前嘗試了以下內容,但同樣的錯誤仍然存在。
foreach (var user in Users) user.PINS = null;
您應該在導航屬性上使用XmlIgnore或ScriptIgnore。 –
我只想忽略這種特殊情況。用戶類在別處使用時可能需要PINS屬性。 –