• ActiveRecord Enabling lazy load 方案


    lazy load AR 官的方案是

                BeginRequest += new EventHandler(OnBeginRequest);
                EndRequest 
    += new EventHandler(OnEndRequest);

                
    // Initialization code omitted

            }

            
    protected void Application_End(object sender, EventArgs e)
            
    {

            }


            
    public void OnBeginRequest(object sender, EventArgs e)
            
    {
        
    //        HttpContext.Current.Items.Add("nh.sessionscope", new SessionScope());
            }


            
    public void OnEndRequest(object sender, EventArgs e)
            
    {
                
    //try
                
    //{
                
    //    SessionScope scope = HttpContext.Current.Items["nh.sessionscope"] as SessionScope;
                
    //    if (scope != null)
                
    //    {
                
    //        scope.Dispose();
                
    //    }
                
    //}
                
    //catch (Exception ex)
                
    //{
                
    //    HttpContext.Current.Trace.Warn("Error", "EndRequest: " + ex.Message, ex);
                
    //}
            }


    但我用这个办法,后来建了个PageBase.cs
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using Castle.ActiveRecord;

    namespace Wz16.WebApp
    {
        
    public class PageBase : System.Web.UI.Page
        
    {
            
    protected SessionScope CurSessionScope ;
            
    protected override void OnInit(EventArgs e)
            
    {
                CurSessionScope 
    = new SessionScope();
                
    base.OnInit(e);
            }


            
    public override void Dispose()
            
    {
                
    try
                
    {
                    
    if (CurSessionScope != null)
                    
    {
                        CurSessionScope.Dispose();
                    }

                }

                
    catch (Exception ex)
                
    {
                    HttpContext.Current.Trace.Warn(
    "Error""EndRequest: " + ex.Message, ex);
                }

                
                
    base.Dispose();
            }

        }

    }

    继承自PageBase.cs的页面就都支持 AR 的 Lazy Load

    我用的 asp.net2.0 为什么官方的方案会不行,有知道的人请赐教。

  • 相关阅读:
    Python基础 索引页
    【Python基础】循环输出随机数例子:生存游戏
    杂项索引页
    【Python 基础】对象持久化的小例子
    《期权的智慧》笔记
    《博弈论》笔记
    别人都在马斯洛金字塔的下部,而你在顶层?
    提高生命的效率
    《不讲逻辑的世界里的逻辑艺术》(The Art of Logic in an Illogical World)笔记
    美德的”近敌“
  • 原文地址:https://www.cnblogs.com/shiningrise/p/887414.html
Copyright © 2020-2023  润新知