EF实例创建问题
dbcontext初始化
- Private DemoContext db=new DemoContext ();
问题:什么时候释放db对象?
使用Using()方法中创建,每次调用会造成频繁的连接关闭数据库
可能会想到对象全局唯一使用单例模式,倘若多个用户操作的时候就是操作同一个数据库,所以必须是线程内全局唯一
解决:MVC中,把EF对象放入到一个线程中,新建一个Base控制器,作为其他控制器基类
添加命名空间引用:
- using System.Runtime.Remoting.Messaging;
控制器代码:
- public class BaseController : Controller
- {
- //方式一
- public DBContext db
- {
- get
- { //从当前线程中获取 DBContext对象
- DBContext db = CallContext.GetData("DB") as DBContext;
- if (db == null)
- {
- db = new DBContext();
- //放入数据槽,来使线程内唯一
- CallContext.SetData("DB", db);
- }
- return db;
- }
- }
- //方式二
- public DBContext DB2
- {
- get
- {
- DBContext db = null;
- if (HttpContext.Items["db1"] == null)
- {
- db = new DBContext();
- HttpContext.Items["db1"] = db;
- }
- else
- {
- db = HttpContext.Items["db1"] as DBContext;
- }
- return db;
- }
- }
- }
CallContext:是类似于方法调用的线程本地存储区的专用集合对象,并提供对每个逻辑执行线程都唯一的数据槽。数据槽不在其他逻辑线程上的调用上下文之间共享
HttpContext:不同用户的请求,服务器都会创建一个新的HttpContext实例,直到请求结束为止,服务器就会销毁这个实例。
EF实例创建问题的更多相关文章
- EF CodeFirst 创建数据库
最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来. 十年河东十年河西,莫欺少年穷 学无止境,精益求精 话说EF支持三种模式:Code First M ...
- [Java] 实例创建的步骤
创建类的一个实例时,按照下面步骤进行创建: 1. 给当前类及其父.祖类的所有成员字段分配空间,并给它们赋予默认值 2. 开始执行当前类的构造器 3. 如果当前类有父类,则对父类创建一个实例:从第 2 ...
- DB2数据库实例创建与删除 学习笔记
以root身份执行 $DB2HOME/instance/db2idrop -f 实例名,注意一定要加-f,否则不会删除实例下面sqllib文件.如果不幸忘了,执行db2icrt,会报sqllib文件存 ...
- NetCore2.0下使用EF CodeFirst创建数据库
本文所使用的VS版本:VS2017 15.3.0 首先新建一个.net core项目 取名NetCoreTask 使用模型视图控制器方式 新建Model层 在Model层下新建一个user实体类 1 ...
- ef 数据库创建失败
在ef之前创建了一个数据库,然后删除后,再用ef创建,失败! USE [master] GO /****** Object: Database [DBname] ******/ ALTER DATAB ...
- C 语言实例 - 创建各类三角形图案
C 语言实例 - 创建各类三角形图案 创建三角形图案. 实例 - 使用 * 号 #include <stdio.h> int main() { int i, j, rows; printf ...
- EF自动创建数据库步骤之三(自定义数据库初始器)
EF自动创建数据库需要我们告诉数据库如何进行初始化:如创建表后是否需要插入一些基础数据,是否 需要创建存储过程.触发器等.还有就是EF有三种初始化方式(参见下面三个类): DropCreateData ...
- EF自动创建数据库步骤之一(实体类写法)
文章演示使用EF自动创建数据库第一个步骤创建实体类. 一.创建表映射实体类 using System; using System.Collections.Generic; using System.C ...
- ALSA driver --PCM 实例创建过程
前面已经写过PCM 实例的创建框架,我们现在来看看PCM 实例是如何创建的. 在调用snd_pcm_new时就会创建一个snd_pcm类型的PCM 实例. struct snd_pcm { struc ...
随机推荐
- Spring-Framework 源码阅读之@Autowired和AutowiredAnnotationBeanPostProcessor
今天接下去讲我们的内容,上次的解析了AnnotationBeanUtils这个类的运用和源码.今天主要关注的是Autowired和 AutowiredAnnotationBeanPostProcess ...
- matlab怎么查看已安装哪些工具箱和…
问题描述:matlab怎么查看已安装哪些工具箱和它们相应的版本 解决方法:在命令行里敲击der,回车 效果:
- HDU5734 Acperience(数学推导)
Problem Description Deep neural networks (DNN) have shown significant improvements in several applic ...
- How Django works?
Django是如何工作的? 概念 以线上版本中Django和Nginx.uwsgi搭配,这里首先要了解uWSGI.uwsgi.WSGI分别代表着什么,其中uWSGI实现了uwsgi.WSGI.HTTP ...
- css3鼠标悬停图片抖动效果
提供一个参考的链接 http://demo.lanrenzhijia.com/2015/pic0113/
- 为什么是Spring Boot
原文:https://dzone.com/articles/why-springboot 作者:Siva Prasad Reddy Katamreddy 译者:Oopsguy 本文介绍将各种Sprin ...
- Github 开源:使用升讯威 Mapper( Sheng.Mapper)与 AutoMapper 互补,大幅提高开发效率!
Github 地址:https://github.com/iccb1013/Sheng.Mapper 在上一篇幅中,简单介绍了 升讯威 Mapper( Sheng.Mapper)[http://www ...
- Head First 设计模式目录
这确实是本好书啊,看其他的书,都会有种看了就忘,看着看着就会有种昏昏欲睡的感脚,然而,这本书却能让我在看了之后记住自己看了些什么. 并且在本书的开头,作者也在一个劲的告诉你如何让自己来记住自己看了什么 ...
- Tp3.2提交表单与操作表单
笔记笔记 先去建个表———— 然后把我输入的东西 存到表里: <input type="submit" id="tijiao" value="提 ...
- python进阶(6):多态,封装
昨天说了面向对象三大特性的继承,今天来说多态和封装,很多其他程序员说python不支持多态没有多态,并不是python没有多态,而是python处处皆多态.今天的讲课重点会放在封装. 一.多态 1.多 ...