- 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