entity framework 一个应用中是每次都new Context,销毁,还是复用直到程序关闭

poko 2014-08-16 11:00:27
entity framework 一个应用中应该是每次都new DbContext 销毁 ( helloworld_context.add(new helloworld()) ),还是一直复用同一个直到程序关闭,

在web中应该是每个request都可以重新new 一个,然后request结束销毁。当然将他弄成application生命周期也可以。但是似乎生命周期越长,问题肯定越多,但是会越方便。

我不知道该怎么做比较好,我现在是直接启动的时候new一个,然后一直使用这个来CRUD数据库当程序关闭的时候销毁,
其实也没销毁,因为不知道写在哪里。程序都关了,他自己也就不见了。


因为我这里就我一个人,我想问问大家一般怎么做,潜规则是怎么样的。

另外要感谢下微软提供的这个框架,我是从java的hibernate过来的。再之前是iBatis,那个苦啊,

从code first方面来微软做的更适合人的想法。就是支持mysql方面不知道哪个公司的原因,默认配置就出错。
每次都折腾好几个小时。莫名其妙就好了。似乎某个程序为了更智能化的配置,却有BUG,自动在增加某些配置导致的。
...全文
422 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
poko 2015-06-22
  • 打赏
  • 举报
回复
谢谢 以上三位,解我心中疑惑。 确实,我在JAVA那里 HIBERNATE的时候就用过单例。不过我做的都是小型的业务系统,只有几个人用,用的时候开,用完就关掉了。所以一支也没出什么问题。
wjq 2014-08-18
  • 打赏
  • 举报
回复
每次创建没有问题,通常一般会一组操作(比如一个函数,或者批量修改一组数据等)使用一个objectcontext。搞成全局的,相当有问题,对于winform累的还好点。对于asp.net的程序,对显著的问题:不同请求之间共享context,有时候会串数据。(由于objectcontext本身就带缓存,A用户假设对数据执行了添加/修改,但没有savechanges,理论上B用户不应该看到,但共享context的话,就能看到了)
winner2050 2014-08-17
  • 打赏
  • 举报
回复
天啊,楼主该不会是在java那里的时候用hibernate就用单例,生命周期不完它就一直活着。 你们的程序经过测试吗?
threenewbee 2014-08-16
  • 打赏
  • 举报
回复
每次都new DbContext 销毁其实没有问题。因为并不是每次都创建连接,provider内部有连接池机制。

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧