读 PetShop代码(Profile篇)

来源:互联网 发布:淘宝摄影用什么相机好 编辑:程序博客网 时间:2024/05/14 11:10

用于存储与用户有关的数据,维护应用程序状态。Profile对象提供一个创建强类型和持久化方式的会话状态的方法。

以Profile.ShoppingCart.Add();

   Profile.Save();

   的执行流程为例

首先配置文件部分代码如下:


<profile automaticSaveEnabled="false" defaultProvider="ShoppingCartProvider">
      
<providers>
        
<add name="ShoppingCartProvider" connectionStringName="SQLProfileConn" type="PetShop.Profile.PetShopProfileProvider" applicationName=".NET Pet Shop 4.0"/>
      
</providers>
      
<properties>
        
<add name="ShoppingCart" type="PetShop.BLL.Cart" allowAnonymous="true" provider="ShoppingCartProvider"/>
      
</properties>
</profile>

根据配置文件,属性也即需要存储的类型为PetShop.BLL.Cart,自定义用户配置提供程序为ShoppingCartProvider,用于存储PetShop.BLL.Cart类中的相关信息。由于ShoppingCartProvider为自定义用户配置提供程序,需要继承自System.Web.Profile.ProfileProvider,重写父类中的一些方法,如Initialize(),GetPropertyValues(),SetPropertyValues()等等。

启动Web应用程序,ASP.NET会根据配置文件中的相关配置创建一个ProfileCommon类的实例,该类继承自System.Web.Profile.ProfileBase类。根据ProfileCommon类的部分代码


public virtual PetShop.BLL.Cart ShoppingCart {
        
get {
            
return ((PetShop.BLL.Cart)(this.GetPropertyValue("ShoppingCart")));
        }
        
set {
            
this.SetPropertyValue("ShoppingCart", value);
        }
}

 

先调用重写的Initialize()方法,用来设置提供者实例的选项与初始值。然后根据(this.GetProertyValue("ShoppingCart")),调用GetPropertyValues方法,用来获取相关属性类型PetShop.BLL.Cart中的有关信息(存储在数据库中)后,进行强类型转换(PetShop.BLL.Cart)(this.GetProertyValue("ShoppingCart")),然后调用Cart.Add()方法。

调用Profile.Save()方法后,程序调用ShoppingCartProvider中重写的方法SetPropertyValue()来完成PetShop.BLL.Cart中相关信息的保存。

转至:http://www.cnblogs.com/sunny0311/archive/2008/09/22/1296241.html