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