ASP EF框架,数据库操作类(上下文类)的实例创建,线程内唯一对象(HttpContext)

本文介绍了在ASP.NET中,为避免数据冲突和提高性能,如何通过工作单元模式确保数据库操作类(上下文类)在每个线程内保持唯一实例。利用 HttpContext 对象,确保每个请求对应一个唯一的数据库操作类实例,从而实现延迟加载、批量保存,并防止内存泄漏问题。
摘要由CSDN通过智能技术生成

因为多个数据库操作类实例(上下文实例),多个实例同时操作数据库可能会引起数据冲突,所以要用一个(同一个)操作类实例(工作单元模式,多次操作数据库,操作多张表,但只链接一次数据库,提高性能。(延迟加载(查询),打上删除、修改标记,添加操作,然后利用同一个数据库操作类.SaveChanges()一次性保存到数据库,这样就只链接了一次数据库,提高了性能))。

如果是所有用户都共用一个实例的话,那么实例一直在被使用,所以就不会被释放。如果用户不断操作数据库,那么操作类实例就会不断的膨胀,最终撑爆内存。

综上,数据库操作类实例需要是线程内唯一对象(一个请求对应一个唯一对象,子线程中不能获取)(利用HttpContext对象)。

未封装版:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class WebForm3 : System.Web.UI.Page
    {
        protecte
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值