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管理的更多相关文章

  1. osharp3使用经验:整合DbContextScope 文章 1

    osharp3的事务处理是跳过savechangeing方法来控制的,没有DbContextScope专业 DbContextScope管理dbcontext的优劣本文不讨论 整合过程: 1.在.Da ...

  2. Javascript - ExtJs - 整合百度文章编辑器

    ExtJs - 整合百度文章编辑器(ExtJs UEditor) 第一步:去官网下载最新版本的UEditor,UEditor下载. 第二步:在编辑器根目录创建一个Extjs-Editor.js,录入以 ...

  3. 解决DbContext对象创建问题

    解决DbContext对象创建问题 方法一: 使用CallContext public class BaseController : Controller { public MyContext db ...

  4. dbcontext实例创建问题

    dbcontext初始化 Private DemoContext db=new DemoContext (): 问题:什么时候释放db对象? 使用Using()方法中创建,每次调用会造成频繁的连接关闭 ...

  5. 潭州课堂25班:Ph201805201 django 项目 第三十四课 后台文章标签更新功能 ,创建功能实现(课堂笔记)

    g更改标签:,前台要向后台传来 id, name, 对标签进行校验:标签不能为空,标签是否已经存在, 流程: def put(self, request, tag_id): ''' 更改标签 :par ...

  6. EF Core 2.0中Transaction事务会对DbContext底层创建和关闭数据库连接的行为有所影响

    数据库 我们先在SQL Server数据库中建立一个Book表: CREATE TABLE [dbo].[Book]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Cr ...

  7. ssh整合思想 Spring与Hibernate的整合 项目在服务器启动则自动创建数据库表

    Spring整合Hibernate Spring的Web项目中,web.xml文件会自动加载,以出现欢迎首页.也可以在这个文件中对Spring的配置文件进行监听,自启动配置文件, 以及之前Struts ...

  8. 零基础学习java------39---------json格式交互,Restful(不懂),静态资源映射,SSM整合(ssm整合思想,application.xml文件详解(声明式事务管理),)

    一. json格式交互(知道) 1 . 回顾ajax基本语法 $.ajax({ url:"", // 请求的后台路径 data:{"":"" ...

  9. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第一章:创建基本的MVC Web站点

    在这一章中,我们将学习如何使用基架快速搭建和运行一个简单的Microsoft ASP.NET MVC Web站点.在我们马上投入学习和编码之前,我们首先了解一些有关ASP.NET MVC和Entity ...

随机推荐

  1. 最小topK问题

  2. linux下使用 du查看某个文件或目录占用磁盘空间的大小

    du -ah --max-depth=1     这个是我想要的结果  a显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小但是由于用了--max-depth选项,表示显示目录下所有 ...

  3. asp.net mvc 简单文件下载

    文件下载,先获取文件的路径,在通过招到文件的存放地址,通过return File(path, "text/plain", Url.Encode(name));,可以直接下载,但是必 ...

  4. bzoj4305: 数列的GCD

    要求k个与原序列中的数不同,就是要求(n-k)个相同,令K=n-k 然后cnt[i]表示序列a中i的倍数的个数 f[i]表示gcd为i的倍数的方案数 f[i]=C(cnt[i],K)*(m/i-1)^ ...

  5. BZOJ 1853: [Scoi2010]幸运数字

    1853: [Scoi2010]幸运数字 Time Limit: 2 Sec  Memory Limit: 64 MBSubmit: 2117  Solved: 779[Submit][Status] ...

  6. BZOJ3142 [Hnoi2013]数列

    Description 小 T最近在学着买股票,他得到内部消息:F公司的股票将会疯涨.股票每天的价格已知是正整数,并且由于客观上的原因,最多只能为N.在疯涨的K天中小T观察 到:除第一天外每天的股价都 ...

  7. 微信公众平台教程和SDK收集

    教程收集: 1.Senparc(.net) http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html 2.方倍工作室 ...

  8. 2.头文件<bits/stdc++.h>

    用这种方法声明头文件只需两行代码 #include<bits/stdc++.h> using namespace std; 这个头文件包含以下等等C++中包含的所有头文件:  #inclu ...

  9. Linux Device Driver && Device File

    catalog . 设备驱动程序简介 . I/O体系结构 . 访问设备 . 与文件系统关联 . 字符设备操作 . 块设备操作 . 资源分配 . 总线系统 1. 设备驱动程序简介 设备驱动程序是内核的关 ...

  10. log4j属性详解

    Log4j有三个主要的组件:Loggers(记录器),Appenders  (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻 ...