profile直接和数据库交互,这对于我们是透明的。使我们摆脱了繁琐的数据库操作代码的编写。把精力放在业务逻辑方面。注意profile与用户相关。我们经常用它来存储一些用户个性化的信息。
profile的实现让我想到了什么呢?
可以把Profile理解为一个工厂,而这个工厂生产什么产品呢?持久化什么产品呢?以前工厂模式是硬编码的,产生什么产品及如何产生都在工厂中编码指定。当我们增加生产一种新品种的时候,不得不重新设计工厂类。原因只有一个,那就是工厂类不是动态生成的。而Profile这个工厂就是动态生成的。
我个人大胆假想:
<add
name="OO"
allowAnonymous="true"
</properties>
</profile>
那么内存中的Profile是什么子呢?(为什么说内存中呢,因为它是Clr动态生成的)
个人假想( 代码不一定正确):
class CustumType{}
今后的编程要是都用这样的方法,岂不是很有意思?
我还没有学习hibernate、Spring框架,是不是有相通的地方呢?
.net的profile对象可以理解为是一个永久存储的session对象。它与session的唯一区别是它是CLR实现存储到.net平台自带数据库或者是自定义指向的数据库中。这可以在machine.config或者web.config中进行配置Profile。如:Web.Config
<configuration>
<connectionStrings>
<add
name="myConnectionString"
connectionString=
"Server=MyServer;Trusted_Connection=true;database=MyDatabase" />
</connectionStrings>
<system.web>
<anonymousIdentification enabled="true" />
<profile defaultProvider="MyProfileProvider">
<providers>
<add
name="MyProfileProvider"
type="System.Web.Profile.SqlProfileProvider"
connectionStringName="myConnectionString" />
</providers>
<properties>
<add
name="FirstName"
allowAnonymous="true" />
<add
name="LastName"
allowAnonymous="true" />
</properties>
</profile>
</system.web>
</configuration>
<%@ Application Language="C#" %>
<script runat="server">
void Profile_MigrateAnonymous(Object s, ProfileMigrateEventArgs e)、、//迁移到匿名
{
ProfileCommon anonProfile = Profile.GetProfile(e.AnonymousId);
Profile.FavoriteColor = anonProfile.FavoriteColor;
}
</script>