EF中DbContext的生命周期
/// <summary>
/// 依赖注入系统中类的生命周期。
/// </summary>
public enum DependencyLifeStyle
{
/// <summary>
/// 单例模式。
/// 第一次解析是创建一个实例,后续解析都使用第一次创建的实例。
/// </summary>
Singleton,
/// <summary>
/// 范围内唯一模式。
/// 同一请求周期内,第一次解析是创建一个实例,后续解析都使用第一次创建的实例。
/// 不同线程 实例不同。
/// </summary>
Scoped,
/// <summary>
/// 瞬态对象。每次解析都创建一个对象。
/// </summary>
Transient
}
完成EF上下文对象的创建,保证在一次请求内只创建一次。保证线程内唯一。
(在asp.net中,EF上下文容器。如果只要有一个,则每次一个用户访问,添加一些实体,然后又不会自动销毁,就会造成内存爆炸。
如果每次创建一个,则就出现一个实例调用混乱。在asp.net中,保证一个线程(一次http请求及一个管道事件),一个EF上下文容器就刚刚好,解决上面问题。)
[MethodImpl(MethodImplOptions.Synchronized)]
public static XFKDB.XFKDB GetDBContext()
{
var dbContext = CallContext.GetData("dbContext") as XFKDB.XFKDB;//线程内唯一的。
if (dbContext == null)
{
dbContext = new XFKDB.XFKDB();
CallContext.SetData("dbContext", dbContext);
}
return dbContext;
}
另一种方式:
[MethodImpl(MethodImplOptions.Synchronized)]
public static XFKDB.XFKDB GetDBContext()
{
var dbContext = NLite.Threading.Local.Get(DbKey) as XFKDB.XFKDB;
if (dbContext == null || dbContext.IsDisposed)
{
dbContext = new XFKDB.XFKDB("constring");
NLite.Threading.Local.Set(DbKey, dbContext);
}
return dbContext;
}
EF中DbContext的生命周期的更多相关文章
- spring IOC 容器中 Bean 的生命周期
IOC 容器中 Bean 的生命周期: 1.通过构造器或工厂方法创建 Bean 实例 2.为 Bean 的属性设置值和对其他 Bean 的引用 3.调用 Bean 后置处理器接口(BeanPostPr ...
- (spring-第1回【IoC基础篇】)Spring容器中Bean的生命周期
日出日落,春去秋来,花随流水,北雁南飞,世间万物皆有生死轮回.从调用XML中的Bean配置信息,到应用到具体实例中,再到销毁,Bean也有属于它的生命周期. 人类大脑对图像的认知能力永远高于文字,因此 ...
- JAVA面试题:Spring中bean的生命周期
Spring 中bean 的生命周期短暂吗? 在spring中,从BeanFactory或ApplicationContext取得的实例为Singleton,也就是预设为每一个Bean的别名只能维持一 ...
- Android应用程序中Activity的生命周期
Android应用程序中Activity的生命周期 对于Android来说Activity的生命周期是非常的重要,尤其是对于新学者来说,只有充分了解了Activity的生命周期,才能写出优良用户体验的 ...
- Spring IOC容器中Bean的生命周期
1.IOC容器中Bean的生命周期 构造器函数 设置属性 初始化函数(在Bean配置中 init-method) 使用Bean 结束时关闭容器(在Bean中配置destroy-method) 2.Be ...
- 深入理解Spring中bean的生命周期
[Spring中bean的生命周期] bean的生命周期 1.以ApplocationContext上下文单例模式装配bean为例,深入探讨bean的生命周期: (1).生命周期图: (2).具体事例 ...
- Spring中Bean的生命周期及其扩展点
原创作品,可以转载,但是请标注出处地址http://www.cnblogs.com/V1haoge/p/6106456.html Spring中Bean的管理是其最基本的功能,根据下面的图来了解Spr ...
- 简:Spring中Bean的生命周期及代码示例
(重要:spring bean的生命周期. spring的bean周期,装配.看过spring 源码吗?(把容器启动过程说了一遍,xml解析,bean装载,bean缓存等)) 完整的生命周期概述(牢记 ...
- spring BeanFactory及ApplicationContext中Bean的生命周期
spring bean 的生命周期 spring BeanFactory及ApplicationContext在读取配置文件后.实例化bean前后.设置bean的属性前后这些点都可以通过实现接口添加我 ...
随机推荐
- unyielding 是否屈服与多线程 勿以恶小而为之 threads are a bad idea
小结: 1. python的妥协 2. As we know, threads are a bad idea, (for most purposes). Threads make local reas ...
- Angular 自定义模块以及配置路由实现模块懒加载
项目目录 创建模块 ng g module module/user --routing ng g module module/article --routing ng g module module/ ...
- 解压命令unzip常用方法汇总
解压命令unzip常用方法汇总: 1.把文件解压到当前目录下 1 unzip pythontab.com.zip 2.如果要把文件解压到指定的目录下,需要用到-d参数. 1 unzip -d ./tm ...
- Docker 部署 ELK 收集 Nginx 日志
一.简介 1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引 ...
- SpringCloud学习成长 四 断路器(Hystrix)
在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务 ...
- mysl创建用户+授权+增、删、改查
1.mysql的root用户无法给普通用户授权问题处理 update mysql.user set Grant_priv='Y' where User='root' and Host='%': flu ...
- 最新javascript自动按比例显示图片,按比例压缩图片显示
最新javascript自动按比例显示图片,按比例压缩图片显示 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
- SVN安装使用【转】
SVN使用教程总结 SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Sub ...
- 【C/C++开发】内存对齐(内存中的数据对齐)、大端模式及小端模式
数据对齐,是指数据所在的内存地址必须是该数据长度的整数倍.DWORD数据的内存起始地址能被4除尽,WORD数据的内存起始地址能被2除尽.X86 CPU能直接访问对齐的数据,当它试图访问一个未对齐的数据 ...
- CenOS 7 防火墙 端口 systemctl 操作项
Centos开放端口 # firewall-cmd --zone=public --add-port=3306/tcp --permanent Centos关闭端口 # firewall-cmd -- ...