当前位置: 代码迷 >> ASP.NET >> 序列化为Json时,出现“此 ObjectContext 实例已释放,不可再用于需要连接的操作。”异常,求解答
  详细解决方案

序列化为Json时,出现“此 ObjectContext 实例已释放,不可再用于需要连接的操作。”异常,求解答

热度:1305   发布时间:2013-02-25 00:00:00.0
序列化为Json时,出现“此 ObjectContext 实例已释放,不可再用于需要连接的操作。”错误,求各位大哥解答
C# code
public List<User> SelectByName(string name)        {            using (CleverTourEntities context = new CleverTourEntities())            //CleverTourEntities context = new CleverTourEntities();            {                var user = from u in context.User                           where u.Name == name                           select u;                //UserList =  user.ToList();                return user.ToList();            }        }

我对想上述方法获取到的List<User>序列化为Json对象,通过
C# code
public static string EntityToJson(object o)        {            //设置Json序列化格式            JsonSerializer js = new JsonSerializer();            //JSON中的Key名称采用驼峰命名法,且首字母小写            js.ContractResolver = new CamelCasePropertyNamesContractResolver();            string rtn = "";            rtn = JArray.FromObject(o, js).ToString();            return rtn;        }
实现
运行时就汇报“此 ObjectContext 实例已释放,不可再用于需要连接的操作。”的错误,我知道using语句后,context对象会被释放。去掉using就可以了。我在这篇文章中http://www.cnblogs.com/kirinboy/archive/2010/01/04/dispose-datacontext-or-not看到说,对于Linq to sql,没必要使用using语句,那么对于linq to entity 是不是也没必要呢?
或者有什么别的解决方法吗?望各位哥哥指点

------解决方案--------------------------------------------------------
没必要using。不过如果要用的话,
你先定义个List<User> users = new List<User>();
在using里面赋值users=user.Tolist();
然后在using外面return users。
------解决方案--------------------------------------------------------
C# code
public List<User> SelectByName(string name)        {            List<User> users = new List<User>();            using (CleverTourEntities context = new CleverTourEntities())            //CleverTourEntities context = new CleverTourEntities();            {                var user = from u in context.User                           where u.Name == name                           select u;                //UserList =  user.ToList();                users = user.ToList();            }            return users;        }
------解决方案--------------------------------------------------------
如果问题依然没有解决 可以看下你的类里是否有导航属性

把导航属性 加上这个特性 JsonIgnore
  相关解决方案