> 馆藏中心

MyDbContext单例问题

来源:cnblogs 编辑:张华

继承自DbContext,而DbContext类在System.Data.Entity命名空间下,该命名空间在没有引用EntityFramework.dll类库的前提下是无法using到的。程序集:EntityFramework(在EntityFramework.dll中)(援引自msdn)csdn上有免积分的可以去下一个(新手用不到EF所以我这没有哈哈所以就不提供了求采纳了)www.179s.com防采集请勿采集本网。

统一回复:出现该问题的原因已找到,DbContext实例是单一实例,但我却用了多个线程在此单例上操作数据,由于DbContext在操作数据后会调用SaveChanges方法,该方法会和当前上下文一一对应,在多线程时,这里就会报错。

解决方法:没用锁,试过用连接池,感觉挺耗性能,所以将插入操作分离开了,用了RabbitMQ。你使用的connecttion对象是只有一个,多个线程使用时,如果前面一个线程关闭了这个connection,其他线程在使用这个connecttion对象就会报错,所以你这个并发的地方每个线程都需要使用一个connection对象,保证connecttion对象的线程安全

自根据项目实体类操作同数据库 自写写wrapper包装dbcontext 比:wrapper.Set() .where.update.delete. set面根据T创建所应dbcontext

可以参考这个链接

DBContext 对应一个库。但你 DBContext可以实例化多次啊。都是同一库

https://www.cnblogs.com/jeffwongishandsome/archive/2011/08/09/2133114.html收获园豆:15你都共用的一个connection,别人正在使用的时候,另一个程序已经释放了,所以就有问题了收获园豆:5entity framework core 不支持在同一个DbContext实例上运行多个操作,会产生线程问题。

DbContext默认是带状态的可以允许编辑,如果不需要编辑设置MergeOption = false;这样还会提高性能。 不能添加是因为EntityFramework并不能实现DataGridView添加, 需要

官方默认的注册周期为scope收获园豆:10

context =((IObjectContextAdapter)objectContext).DbContext; 二是ObjectContext包含DbContext,DbContext包含了ObjectContext的大部分方法和属性。DbContext是扩展了Obje

DbContext是对ObjectContext的简化封装。原来的ObjectContext有些地方太繁琐了,而且很多高级特性实际上并不常用。这是两套API,和DB First,Model First还是Code First没有直接关系。要生成ObjectContext的话,先把EF的.tt文件删掉,然后把模型的代码生成策略改成Default内容来自www.179s.com请勿采集。

本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。本文《MyDbContext单例问题》转载自cnblogs,版权归原作者所有,若侵权请联系:E-MAIL:513175919@qq.com
违法违规信息请立即联系本网可获得现金奖励,TEL:1-8-2-1-0-2-3-3-3-8-1(电话仅供违法违规信息举报,侵权类信息请EMAIL。)

www.179s.com false 互联网 http://www.179s.com/jsblogcnk/po/pohvoa.html report 2091 统一回复:出现该问题的原因已找到,DbContext实例是单一实例,但我却用了多个线程在此单例上操作数据,由于DbContext在操作数据后会调用SaveChanges方法,该方法会和当前上下文一一对应,在多线程时,这里就会报错。解决方法:没用锁,试过用连接池,感觉挺耗性能,所以将插入操作分离开了,用了RabbitMQ。你使用的connecttion对象是只有一个,多个线程使用时,如果前面一个线程关闭了这个connection,其他线程在使用这个connecttion对象就会报错,所以

热门图片

经济金融企业管理法律法规社会民生科学教育降生活体育运动文化艺术电子数码电脑网络娱乐休闲行政地区心理分析医疗卫生