DataContextAutoDisposeModule

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Collections;
 6 using System.Data.Linq;
 7 
 8 /// <summary>
 9 /// 实现自动抛弃当前数据库上下文的模块。
10 /// </summary>
11 public sealed class DataContextAutoDisposeModule : IHttpModule
12 {
13     #region IHttpModule 成员
14     public void Init(HttpApplication context)
15     {
16         context.PostRequestHandlerExecute += new EventHandler(Enter);
17     }
18 
19     public void Dispose()
20     {
21     }
22     #endregion
23 
24     private void Enter(object sender, EventArgs e)
25     {
26         IDictionary httpContextItems = HttpContext.Current.Items;
27         List<object> keys = new List<object>(httpContextItems.Count);
28 
29         foreach (DictionaryEntry item in httpContextItems)
30         {
31             DataContext dataContext = item.Value as DataContext;
32             if (dataContext != null)
33             {
34                 dataContext.Dispose();
35                 keys.Add(item.Key);
36             }
37         }
38 
39         foreach (object key in keys)
40         {
41             httpContextItems.Remove(key);
42         }
43     }
44 }

DataContextFactory

using System.Data.Linq;
using System.Web;

public static class DataContextFactory
{
    public static TDataContext GetDataContext<TDataContext>()
        where TDataContext : DataContext, new()
    {
        if (HttpContext.Current != null)
        {
            string key = typeof(TDataContext).FullName;

TDataContext dataContext = HttpContext.Current.Items[key] as TDataContext;
            if (dataContext == null)
            {
                dataContext = new TDataContext();
                HttpContext.Current.Items[key] = dataContext;
            }
            return dataContext;
        }

return new TDataContext();
    }
}

转载于:https://www.cnblogs.com/brusehht/archive/2011/09/09/2172494.html

EF中DataContext创建的两段代码收藏相关推荐

  1. EF中Add()和Attach()两种添加数据方法的区别

    最近在开发一个项目,在实现某个模块数据的插入操作时(底层数据库的交互采用的是EF),发现无论如何数据都不能插入成功,把数据拷贝出来放到数据库中执行Sql语句时却能正确插入,下面给出代码片段 publi ...

  2. EF中数据优先,模型优先和代码优先

    看了很多文章也不是很明白,说的都太书面化了,大家看看这图一下子就明白了,哈哈 其实看图很简单,database first和model first都是通过 data model创建的edmx文件,只不 ...

  3. 【unity】动画状态机中Transition的settings两段动画如何设置?

    场景 这里其实就很类似一些视频剪辑的软件类似Pr或者vegas了 因为Transition中文就是过度的意思 两段动画A,B在过度的时候,如果播放完A再播放B,那就会显得很生硬!怎么办呢? 调整一下动 ...

  4. python中生成器的两段代码

    生产者-消费者经典单线程问题 import time def consumer(name):     print("%s 准备吃包子啦!" %name)     while Tru ...

  5. 系统快捷方式java_java中这么创建界面快捷方式图标 代码

    @echo off color 0a :head cls set /p url=请输入文件的位置: set /p name=请输入快捷方式的名称: echo ThePath = "%url% ...

  6. java通过代码显示特定窗体,如何把这两段代码在一个窗体显示,类似于windows自带的扫雷一样...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 第一段是菜单栏: package saolei; import java.awt.event.ActionEvent; import java.awt.e ...

  7. 如何用pycharm对比两段代码(或两个文件的代码)

    右键文件,点击Compare With 选择要对比的文件,点击ok 然后就可以愉快地玩耍啦♪(∇*) 参考文章:pycharm的强大之处之两个文件代码的比对

  8. java 事件分发机制_用两段代码带你看懂事件分发机制

    先来看一段精简版的源码 View.java public class View { private View.OnClickListener mOnClickListener; private OnL ...

  9. 什么是epoll的水平触发与边缘触发?两段代码彻底理解

    Edge trigger and level trigger of epoll 水平触发 对于读操作:只要缓冲内容不为空,LT模式返回读就绪. 对于写操作:只要缓冲区还不满,LT模式会返回写就绪. # ...

  10. 如何测试pytorch-gpu版本和tensorflow-gpu版本是否安装成功,测试代码如下,在想要测试的环境中将两段代码分别输入测试即可

    #测试pytorch-gpu是否能用 import torch flag = torch.cuda.is_available() print(flag) ngpu= 1 # Decide which ...

最新文章

  1. 敏捷宣言遵循的十二条原则
  2. 《BI那点儿事》三国人物智力分布状态分析
  3. boost::sort模块实现跨并行线程的整数排序速度基准的测试程序
  4. python用什么处理文件_利用Python如何快速处理文件
  5. 针对WEB前端新人的前端知识体系
  6. 51nod 1046 A^B Mod C
  7. 网站去色的通用方法(简单)
  8. 现有 Delphi 项目迁移到 Tiburon 中的注意事项
  9. mysql 帮助文档使用
  10. Mac OSX上折腾JDK
  11. 大数据比海量数据多了什么
  12. 蛮牛教育Unity Shader从入门到精通:第十节课Shader问题
  13. 嵌入式的c语言,嵌入式c语言
  14. 移动宽带覆盖小区查询 (广东范围)
  15. 蒟蒻的数据结构乱谈(未完)
  16. 关于左对齐和左对齐的一些简单理解和杨辉3角的算法思想
  17. 华硕天选2键盘背光灯切换颜色
  18. 技术团队建设总结(一)
  19. Broadcast 和 BroadcastReceiver
  20. 强制root工具kingoroot

热门文章

  1. flask的各种装饰器
  2. javasript深度拷贝
  3. matconvnet在MATLAB2013配置过程中遇到的问题
  4. Emulator Error: Could not load OpenGLES emulation library: Could not load DLL!
  5. hdu 1394 Minimum Inversion Number(树状数组)
  6. Windows 下安装Python包(Numpy)的错误:Unable to find vcvarsall.bat
  7. HackFifteen 移除背景以提升Activity启动速度
  8. 《算法图解》读书笔记(一)
  9. Windows server 2016 / Windows 10关于域管理员帐号权限不足的问题
  10. ClassLoader 学习笔记