首页新闻找找看学习计划

entityFramework上下文已经关闭?

0
[已解决问题] 解决于 2015-08-25 10:09

当json系列化一个结果的时候,比如

persondao dao = new persondao();
person p = dao.get("张三");
dao.dispose(); json.Serialization(p);

序列化的时候会提示上下文已经关闭,不能再用。

我想是因为序列化的时候,访问了person的导航属性,处罚ef的懒加载机制,而此时上下文已经关闭,所以导致此问题。

1.有没有解决此问题好的方式?

2.ef中能否禁止查询导航属性?如何实现?

yanwushu的主页 yanwushu | 菜鸟二级 | 园豆:204
提问于:2015-08-04 17:37
< >
分享
最佳答案
1

dao.dispose(); json.Serialization(p); 颠倒一下顺序就可以了

奖励园豆:5
2012 | 专家六级 |园豆:18932 | 2015-08-05 08:59

这样是否会导致导航属性和导航属性的导航属性都被序列化出来,浪费资源

yanwushu | 园豆:204 (菜鸟二级) | 2015-08-05 10:26

@yanwushu: dao.dispose()放在前面,变成对释放的对象操作肯定不对,我记得EF可以不让加载关联对象,enable的属性吧好像

http://www.codeproject.com/Articles/788559/Loading-Related-Entities-with-Entity-Framework-A-B LazyLoad不用的对象自然不会加载

2012 | 园豆:18932 (专家六级) | 2015-08-05 12:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册