首页 > 代码库 > 一次请求共用一个实例(值),将(实例)值存储到当前请求线程区

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

在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 Program12     {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 }

上面的代码运行结果:

技术分享

 

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