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

Posted 赛跑的蜗牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一次请求共用一个实例(值),将(实例)值存储到当前请求线程区相关的知识,希望对你有一定的参考价值。

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

上面的代码运行结果:

 

以上是关于一次请求共用一个实例(值),将(实例)值存储到当前请求线程区的主要内容,如果未能解决你的问题,请参考以下文章

将 url 留在 Angular 中时从本地存储中删除值

全局axios默认值 和 自定义实例默认值

Swift GG__3

为函数的每个实例创建唯一的存储值

静态函数Static

Django从当前实例设置初始下拉值?