dbcontext初始化

  1. Private DemoContext db=new DemoContext ();

问题:什么时候释放db对象?

使用Using()方法中创建,每次调用会造成频繁的连接关闭数据库

可能会想到对象全局唯一使用单例模式,倘若多个用户操作的时候就是操作同一个数据库,所以必须是线程内全局唯一

解决:MVC中,把EF对象放入到一个线程中,新建一个Base控制器,作为其他控制器基类

添加命名空间引用:

  1. using System.Runtime.Remoting.Messaging;

控制器代码:

  1. public class BaseController : Controller
  2. {
  3. //方式一
  4. public DBContext db
  5. {
  6. get
  7. { //从当前线程中获取 DBContext对象
  8. DBContext db = CallContext.GetData("DB") as DBContext;
  9. if (db == null)
  10. {
  11. db = new DBContext();
  12. //放入数据槽,来使线程内唯一
  13. CallContext.SetData("DB", db);
  14. }
  15. return db;
  16. }
  17. }
  18. //方式二
  19. public DBContext DB2
  20. {
  21. get
  22. {
  23. DBContext db = null;
  24. if (HttpContext.Items["db1"] == null)
  25. {
  26. db = new DBContext();
  27. HttpContext.Items["db1"] = db;
  28. }
  29. else
  30. {
  31. db = HttpContext.Items["db1"] as DBContext;
  32. }
  33. return db;
  34. }
  35. }
  36. }

CallContext:是类似于方法调用的线程本地存储区的专用集合对象,并提供对每个逻辑执行线程都唯一的数据槽。数据槽不在其他逻辑线程上的调用上下文之间共享

HttpContext:不同用户的请求,服务器都会创建一个新的HttpContext实例,直到请求结束为止,服务器就会销毁这个实例。

EF实例创建问题的更多相关文章

  1. EF CodeFirst 创建数据库

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精    话说EF支持三种模式:Code First   M ...

  2. [Java] 实例创建的步骤

    创建类的一个实例时,按照下面步骤进行创建: 1. 给当前类及其父.祖类的所有成员字段分配空间,并给它们赋予默认值 2. 开始执行当前类的构造器 3. 如果当前类有父类,则对父类创建一个实例:从第 2 ...

  3. DB2数据库实例创建与删除 学习笔记

    以root身份执行 $DB2HOME/instance/db2idrop -f 实例名,注意一定要加-f,否则不会删除实例下面sqllib文件.如果不幸忘了,执行db2icrt,会报sqllib文件存 ...

  4. NetCore2.0下使用EF CodeFirst创建数据库

    本文所使用的VS版本:VS2017 15.3.0 首先新建一个.net core项目  取名NetCoreTask 使用模型视图控制器方式 新建Model层 在Model层下新建一个user实体类 1 ...

  5. ef 数据库创建失败

    在ef之前创建了一个数据库,然后删除后,再用ef创建,失败! USE [master] GO /****** Object: Database [DBname] ******/ ALTER DATAB ...

  6. C 语言实例 - 创建各类三角形图案

    C 语言实例 - 创建各类三角形图案 创建三角形图案. 实例 - 使用 * 号 #include <stdio.h> int main() { int i, j, rows; printf ...

  7. EF自动创建数据库步骤之三(自定义数据库初始器)

    EF自动创建数据库需要我们告诉数据库如何进行初始化:如创建表后是否需要插入一些基础数据,是否 需要创建存储过程.触发器等.还有就是EF有三种初始化方式(参见下面三个类): DropCreateData ...

  8. EF自动创建数据库步骤之一(实体类写法)

    文章演示使用EF自动创建数据库第一个步骤创建实体类. 一.创建表映射实体类 using System; using System.Collections.Generic; using System.C ...

  9. ALSA driver --PCM 实例创建过程

    前面已经写过PCM 实例的创建框架,我们现在来看看PCM 实例是如何创建的. 在调用snd_pcm_new时就会创建一个snd_pcm类型的PCM 实例. struct snd_pcm { struc ...

随机推荐

  1. Spring-Framework 源码阅读之@Autowired和AutowiredAnnotationBeanPostProcessor

    今天接下去讲我们的内容,上次的解析了AnnotationBeanUtils这个类的运用和源码.今天主要关注的是Autowired和 AutowiredAnnotationBeanPostProcess ...

  2. matlab怎么查看已安装哪些工具箱和…

    问题描述:matlab怎么查看已安装哪些工具箱和它们相应的版本 解决方法:在命令行里敲击der,回车 效果:

  3. HDU5734 Acperience(数学推导)

    Problem Description Deep neural networks (DNN) have shown significant improvements in several applic ...

  4. How Django works?

    Django是如何工作的? 概念 以线上版本中Django和Nginx.uwsgi搭配,这里首先要了解uWSGI.uwsgi.WSGI分别代表着什么,其中uWSGI实现了uwsgi.WSGI.HTTP ...

  5. css3鼠标悬停图片抖动效果

    提供一个参考的链接 http://demo.lanrenzhijia.com/2015/pic0113/

  6. 为什么是Spring Boot

    原文:https://dzone.com/articles/why-springboot 作者:Siva Prasad Reddy Katamreddy 译者:Oopsguy 本文介绍将各种Sprin ...

  7. Github 开源:使用升讯威 Mapper( Sheng.Mapper)与 AutoMapper 互补,大幅提高开发效率!

    Github 地址:https://github.com/iccb1013/Sheng.Mapper 在上一篇幅中,简单介绍了 升讯威 Mapper( Sheng.Mapper)[http://www ...

  8. Head First 设计模式目录

    这确实是本好书啊,看其他的书,都会有种看了就忘,看着看着就会有种昏昏欲睡的感脚,然而,这本书却能让我在看了之后记住自己看了些什么. 并且在本书的开头,作者也在一个劲的告诉你如何让自己来记住自己看了什么 ...

  9. Tp3.2提交表单与操作表单

    笔记笔记 先去建个表———— 然后把我输入的东西 存到表里: <input type="submit" id="tijiao" value="提 ...

  10. python进阶(6):多态,封装

    昨天说了面向对象三大特性的继承,今天来说多态和封装,很多其他程序员说python不支持多态没有多态,并不是python没有多态,而是python处处皆多态.今天的讲课重点会放在封装. 一.多态 1.多 ...