osharp3 整合 dbcontextscope 后,,dbcontextscope 对dbcontext管理的很好,做到,用到时创建,不用时销毁,下面看一个 trace

  1. aspx.page: End PreInit
  2. aspx.page: Begin Init
  3. aspx.page: End Init
  4. aspx.page: Begin InitComplete
  5. aspx.page: End InitComplete
  6. aspx.page: Begin PreLoad
  7. aspx.page: End PreLoad
  8. aspx.page: Begin Load
  9. trace OnLoad: SetControlInPage begin 根据权限标记,控制页面控件的显示和隐藏
  10. trace OnLoad: RegBtnClick begin 根据权限标记,注册按钮事件
  11. : DefaultDbContext ctor
  12.  
  13. object name: System.String
  14. caller name: CanDoo.Data.Entity.Interceptors.EFIntercepterLogging
  15. member name: ReaderExecuted
  16. source line number: 94
  17. time: 20160705 071119 8589791
  18. message: ReaderExecuted执行时间:0 毫秒 \r\n -->ReaderExecuted.Command:\r\nSELECT
  19. [Extent1].[Id] AS [Id],
  20. [Extent1].[CreatedTime] AS [CreatedTime],
  21. [Extent1].[Code] AS [Code],
  22. [Extent1].[SortIndex] AS [SortIndex],
  23. [Extent1].[Remark] AS [Remark],
  24. [Extent1].[ParentId] AS [ParentId],
  25. [Extent1].[Name] AS [Name]
  26. FROM [dbo].[sys_Department] AS [Extent1]
  27.  
  28. : DefaultDbContext Dispose
  29. aspx.page: End Load
  30. aspx.page: Begin LoadComplete
  31. aspx.page: End LoadComplete
  32. aspx.page: Begin PreRender
  33. aspx.page: End PreRender
  34. aspx.page: Begin PreRenderComplete
  35. aspx.page: End PreRenderComplete
  36. aspx.page: Begin SaveState
  37. aspx.page: End SaveState
  38. aspx.page: Begin SaveStateComplete
  39. aspx.page: End SaveStateComplete
  40. aspx.page: Begin Render
  41. aspx.page: End Render

但dbcontext默认是由dbcontextscope创建的,所以,我们的ioc就不能对dbcontext建行注入

不过它留了个接口 IDbContextFactory

  1. public interface IDbContextFactory
  2. {
  3. TDbContext CreateDbContext<TDbContext>() where TDbContext : DbContext;
  4. DbContext CreateDbContext(Type requestedType);
  5. }

为了在dbcontext注入属性,,我通过这个接口,

将dbcontext的创建收回到ioc,实现这个接口

  1. public class CandooDbContextFactory : IDbContextFactory
  2. {
  3. private IServiceProvider _provider;
  4. public CandooDbContextFactory(IServiceProvider provider)
  5. {
  6. _provider = provider;
  7. }
  8. public TDbContext CreateDbContext<TDbContext>() where TDbContext : DbContext
  9. {
  10. return (TDbContext)_provider.GetService(typeof(TDbContext));
  11. }
  12.  
  13. public DbContext CreateDbContext(Type requestedType)
  14. {
  15. return (DbContext)_provider.GetService(requestedType);
  16. }
  17. }

修改Startup注入配置

  1. services.AddTransient<DefaultDbContext>();
  2. services.AddTransient<LoggingDbContext>();
  3. 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. JS 弹窗到右下角

    <div id="msg_win" style="display: block; top: 490px; visibility: visible; opacity: ...

  2. ORA-29538、ORA-29532、ORA-29913问题解决

    问题一:ERROR at line 1: ORA-29538: Java not installed解决方法1.检查有没有安装JAVA组件select * from v$option t where ...

  3. BZOJ 1124: [POI2008]枪战Maf

    1124: [POI2008]枪战Maf Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 617  Solved: 236[Submit][Status ...

  4. 【faster-rcnn】训练自己的数据集时的坑

    既然faster-rcnn原版发表时候是matlab版代码,那就用matlab版代码吧!不过遇到的坑挺多的,不知道python版会不会好一点. ======= update ========= 总体上 ...

  5. 【BZOJ-1055】玩具取名 区间DP

    1055: [HAOI2008]玩具取名 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1560  Solved: 907[Submit][Statu ...

  6. Windows Server 2012及以上安装IIS的步骤

    已经和2008安装时有着明显区别,如题的安装步骤如下: 这里需要注意的是,选择了[Web 服务器(IIS)支持]后可能会弹出选择的界面,到时也一起全选,这里由于是已经安装了,所以没弹出. 说明:上面根 ...

  7. CSS中的a标签几个访问状态记录

    a:link {color: #FF0000}     /* 未访问的链接 */a:visited {color: #00FF00}  /* 已访问的链接 */a:hover {color: #FF0 ...

  8. hdu3932 模拟退火

    模拟退火绝对是从OI--ACM以来接触过的所有算法里面最黑科技的orz 题意:地上有一堆hole,要找一个点,使得(距离该点最远的hole的距离)最小. sol:本来想套昨天的模拟退火模板,初值(0, ...

  9. 重新认识unicode和utf8编码

    重新认识unicode和utf8编码 直到今天,准确的说是刚才,我才知道UTF-8编码和Unicode编码是不一样的,是有区别的囧 他们之间是有一定的联系的,看看他们的区别: UTF-8的长度是不一定 ...

  10. Androidstudio 的svn配置 需要忽略的目录