一次请求共用一个实例(值),将(实例)值存储到当前请求线程区

在ef中有个DbContext上下文,如果每次访问数据库都产生一个DbContext那是不好做法,比较好做法是一次请求共用一次DbContext实例,可以将DbContext存储到当前请求线程区。

测试使用当前请求线程存储区代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5
 6 namespace RuntimeDemo
 7 {
 8     /// <summary>
 9     /// 测试线程值的存储
10     /// </summary>
11     class Program
12     {
13         static void Main(string[] args)
14         {
15             System.Runtime.Remoting.Messaging.CallContext.SetData("valueKey", "存到当前请求线程区的值");  //将值存储进当前请求线程区  存储到当前线程区的值会睡着线程被回收而回收
16
17             string str = System.Runtime.Remoting.Messaging.CallContext.GetData("valueKey") as string;  //获取存储进当前请求的线程区的值
18
19             Console.WriteLine(str);
20
21             Console.ReadLine();
22
23         }
24     }
25 }

上面的代码运行结果:

时间: 2024-12-28 01:02:55

一次请求共用一个实例(值),将(实例)值存储到当前请求线程区的相关文章

确保一个请求共用一个上下文

//职责:确保一个请求共用一个上下文 public class DataBaseContextFactory { //返回基类,这样就可以随意做到切换上下文了 public static DbContext GetDataTabelContext() { //共用一个请求上下文实例 DbContext dbcontext = CallContext.GetData("DbContext") as DbContext; if (dbcontext == null) { dbcontext

C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值

转自goldeneyezhang原文 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值 C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值总结: 对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): Type t = tc.GetType();//获得该类的Type //再用Type.GetProperties获得PropertyInfo[],然后就可以用foreach 遍历了 foreach (PropertyInfo pi

arping---发送arp请求到一个相邻主机

arping命令是用于发送arp请求到一个相邻主机的工具,arping使用arp数据包,通过ping命令检查设备上的硬件地址.能够测试一个ip地址是否是在网络上已经被使用,并能够获取更多设备信息.功能类似于ping. 语法 arping(选项)(参数) 选项 -b:用于发送以太网广播帧(FFFFFFFFFFFF).arping一开始使用广播地址,在收到响应后就使用unicast地址. -q:quiet output不显示任何信息: -f:表示在收到第一个响应报文后就退出: -w timeout:

自动封装Servlet HttpServletRequest请求成为一个POJO对象

自己写了个小工具类,将Servlet里面的HttpServletRequest请求封装成为一个POJO对象,可以复习一下Java的反射原理,开发中这个没什么用,毕竟都用MVC框架,框架都自带这种功能,而且更为强大,不过框架也应该是采用这种原理,通过这个也能对框架窥测一二. 这是工具类:通过传入POJO的Class对象来自动封装一个POJO. package com.xxx.xxx.util; import java.lang.reflect.InvocationTargetException;

static 和 final 关键字 对实例变量赋初始值的影响

static 和 final 关键字 对实例变量赋初始值的影响 最近一直在看<深入理解Java虚拟机>,在看完了对象内存分配.Class文件格式之后,想深扒一下实例变量是如何被赋上初始值的这个问题的细节. 在2.3.1小节中讲对象创建的时候,讲到内存分配有两种方式:一种是指针碰撞:另一种是空闲列表. 而选择哪种分配方式是由JAVA堆是否规整决定,而JAVA堆是否规整则由虚拟机所采用的垃圾收集器是否带压缩整理功能决定. 我们不管内存分配采用何种方式,当内存分配完成后,虚拟机将分配到的内存空间都初

记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑

我通过这篇文章把今天工作中遇到的HTTP跨域和OPTION请求的一个坑记录下来. 场景是我需要在部署在域名a的Web应用里用JavaScript去消费一个部署在域名b的服务器上的服务.域名b上的服务也是我开发的,因此我将域名a加到了该服务的HTTP响应结构的头文件里,这样就允许了域名a上的JavaScript代码用AJAX访问域名b的服务. 域名b上的服务是一个Servlet,允许域名a跨域访问的代码就一行: protected void doGet(HttpServletRequest req

分享一个批量导出当前实例下的所有linkedserver脚本

原文:分享一个批量导出当前实例下的所有linkedserver脚本 分享一个批量导出当前实例下的所有linkedserver脚本 很多时候,我们都需要导出实例下面的登录用户,job,linkedserver等等 导出job比较复杂,下午写了一个脚本把所有的linkedserver导出来,但是密码不会显示出来 下面脚本在SQL2008 R2下面测试通过 -- ============================================= -- Author: <桦仔> -- Blog

计算一个数组里的重复值并且删去(java)

主要思想: 假设数字里的值都为正 循环判断数组 如果与前面的数字相同则变为-1 然后记录-1的个数算出重复值 然后重新new一个减去重复值长度的新数组 和原数组判断 不为-1的全部复制进来即可 代码如下: 1 package Del_Same_Num; 2 3 public class Del_Same_Num { 4 5 static int count=0; 6 7 //计算重复值 8 public static int count_same_number(int[] a) 9 { 10 f

JS 点击元素发ajax请求 打开一个新窗口

JS 点击元素发ajax请求 打开一个新窗口 经常在项目中会碰到这样的需求,点击某个元素后,需要发ajax请求,请求成功以后,开发需要把链接传给前端(或者说请求成功后打开新窗口),前端需要通过新窗口打开这个链接,其实这样的原理大家可能觉得非常简单,想起来非常简单,用JS中的window.open就可以实现打开新的窗口,或者点击div元素,发ajax请求成功后,动态把链接传给a标签,然后再触发a标签事件,也可以实现,对吧?曾几何时,我也曾经把这样的问题发到JS群里面去,很多JS社区朋友说 龙恩 这