首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-09-11 
序列化为Json时,出现“此 ObjectContext 实例已释放,不可再用于需要连接的操作。”错误,求各位大哥解答C# cod

序列化为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.html看到说,对于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

热点排行