我的代码是这样的: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属性。 –