osharp3 整合 dbcontextscope 文章2 将dbcontext的创建收回到ioc管理
osharp3 整合 dbcontextscope 后,,dbcontextscope 对dbcontext管理的很好,做到,用到时创建,不用时销毁,下面看一个 trace
aspx.page: End PreInit
aspx.page: Begin Init
aspx.page: End Init
aspx.page: Begin InitComplete
aspx.page: End InitComplete
aspx.page: Begin PreLoad
aspx.page: End PreLoad
aspx.page: Begin Load
trace OnLoad: SetControlInPage begin 根据权限标记,控制页面控件的显示和隐藏
trace OnLoad: RegBtnClick begin 根据权限标记,注册按钮事件
: DefaultDbContext ctor object name: System.String
caller name: CanDoo.Data.Entity.Interceptors.EFIntercepterLogging
member name: ReaderExecuted
source line number: 94
time: 20160705 071119 8589791
message: ReaderExecuted执行时间:0 毫秒 \r\n -->ReaderExecuted.Command:\r\nSELECT
[Extent1].[Id] AS [Id],
[Extent1].[CreatedTime] AS [CreatedTime],
[Extent1].[Code] AS [Code],
[Extent1].[SortIndex] AS [SortIndex],
[Extent1].[Remark] AS [Remark],
[Extent1].[ParentId] AS [ParentId],
[Extent1].[Name] AS [Name]
FROM [dbo].[sys_Department] AS [Extent1] : DefaultDbContext Dispose
aspx.page: End Load
aspx.page: Begin LoadComplete
aspx.page: End LoadComplete
aspx.page: Begin PreRender
aspx.page: End PreRender
aspx.page: Begin PreRenderComplete
aspx.page: End PreRenderComplete
aspx.page: Begin SaveState
aspx.page: End SaveState
aspx.page: Begin SaveStateComplete
aspx.page: End SaveStateComplete
aspx.page: Begin Render
aspx.page: End Render
但dbcontext默认是由dbcontextscope创建的,所以,我们的ioc就不能对dbcontext建行注入
不过它留了个接口 IDbContextFactory
public interface IDbContextFactory
{
TDbContext CreateDbContext<TDbContext>() where TDbContext : DbContext;
DbContext CreateDbContext(Type requestedType);
}
为了在dbcontext注入属性,,我通过这个接口,
将dbcontext的创建收回到ioc,实现这个接口
public class CandooDbContextFactory : IDbContextFactory
{
private IServiceProvider _provider;
public CandooDbContextFactory(IServiceProvider provider)
{
_provider = provider;
}
public TDbContext CreateDbContext<TDbContext>() where TDbContext : DbContext
{
return (TDbContext)_provider.GetService(typeof(TDbContext));
} public DbContext CreateDbContext(Type requestedType)
{
return (DbContext)_provider.GetService(requestedType);
}
}
修改Startup注入配置
services.AddTransient<DefaultDbContext>();
services.AddTransient<LoggingDbContext>();
services.AddScoped<IDbContextFactory, CandooDbContextFactory>();
相关文章:
osharp3使用经验:整合DbContextScope 文章 1 http://www.cnblogs.com/shiningrise/p/oshap3_DbContextScope.html
https://github.com/mehdime/DbContextScope
https://github.com/i66soft/osharp
osharp3 整合 dbcontextscope 文章2 将dbcontext的创建收回到ioc管理的更多相关文章
- osharp3使用经验:整合DbContextScope 文章 1
osharp3的事务处理是跳过savechangeing方法来控制的,没有DbContextScope专业 DbContextScope管理dbcontext的优劣本文不讨论 整合过程: 1.在.Da ...
- Javascript - ExtJs - 整合百度文章编辑器
ExtJs - 整合百度文章编辑器(ExtJs UEditor) 第一步:去官网下载最新版本的UEditor,UEditor下载. 第二步:在编辑器根目录创建一个Extjs-Editor.js,录入以 ...
- 解决DbContext对象创建问题
解决DbContext对象创建问题 方法一: 使用CallContext public class BaseController : Controller { public MyContext db ...
- dbcontext实例创建问题
dbcontext初始化 Private DemoContext db=new DemoContext (): 问题:什么时候释放db对象? 使用Using()方法中创建,每次调用会造成频繁的连接关闭 ...
- 潭州课堂25班:Ph201805201 django 项目 第三十四课 后台文章标签更新功能 ,创建功能实现(课堂笔记)
g更改标签:,前台要向后台传来 id, name, 对标签进行校验:标签不能为空,标签是否已经存在, 流程: def put(self, request, tag_id): ''' 更改标签 :par ...
- EF Core 2.0中Transaction事务会对DbContext底层创建和关闭数据库连接的行为有所影响
数据库 我们先在SQL Server数据库中建立一个Book表: CREATE TABLE [dbo].[Book]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Cr ...
- ssh整合思想 Spring与Hibernate的整合 项目在服务器启动则自动创建数据库表
Spring整合Hibernate Spring的Web项目中,web.xml文件会自动加载,以出现欢迎首页.也可以在这个文件中对Spring的配置文件进行监听,自启动配置文件, 以及之前Struts ...
- 零基础学习java------39---------json格式交互,Restful(不懂),静态资源映射,SSM整合(ssm整合思想,application.xml文件详解(声明式事务管理),)
一. json格式交互(知道) 1 . 回顾ajax基本语法 $.ajax({ url:"", // 请求的后台路径 data:{"":"" ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点
在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...
随机推荐
- ES6新特性:Proxy代理器
ES6新特性:Proxy: 要使用的话, 直接在浏览器中执行即可, node和babel目前还没有Proxy的polyfill;,要使用的话,直接在浏览器中运行就好了, 浏览器的兼容性为:chrome ...
- html-css控制背景图全屏拉伸不重复显示
在HTML中,当我们设置背景图,只能采用是否重叠.居中.重叠方向这几个选项 CSS3中设置 body { background:#3d71b8 url(../back_main.png); backg ...
- c# 获取iis地址
using System;using System.Collections.Generic;using System.DirectoryServices;using System.Linq;using ...
- 【bzoj1597】 土地购买
http://www.lydsy.com/JudgeOnline/problem.php?id=1597 (题目链接) 题意 购买n个矩形,每块土地的价格是它的面积,但可以同时购买多快土地. 这些土地 ...
- 【bzoj2104】 K-th Number
http://poj.org/problem?id=2104 (题目链接) 题意 求区间第k大数. Solution1 主席树裸题. 主席树当时我学是学的要死,那个时候不晓得百度出什么bug了,搜个主 ...
- 前端rem单位的使用研究
分析网易新闻手机web端,http://3g.163.com/,发现里面大量使用了rem这个单位进行计算大小. 针对rem这个单位有如下解析: px:像素是相对于显示器屏幕分辨率而言的相对长度单位.p ...
- Windows、Linux下文件操作(写、删除)错误的产生原因、及解决方法
catalog . 引言 . Linux平台上涉及的File IO操作 . Windows平台上涉及的File IO操作 0. 引言 本文试图讨论在windows.linux操作系统上基于C库进行文件 ...
- dedecms /plus/stow.php Twice SQL Injection
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 收藏文章功能$title变量未过滤,造成二次注入 Relevant Li ...
- raspberry pi的网络配置
这个像是interface的man. http://fts.ifac.cnr.it/cgi-bin/dwww?type=runman&location=interfaces/5 然后是一篇博文 ...
- MongoDB安装,配置
安装 cd /usr/local/srcwget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.6.tgztar z ...