今天第一次记录自己的学习过程到博客,希望可以和大家一起交流和进退,请大家多多指教。

今天学习的是.net自带的Login系列控件,Login一系列的控件均是结合Membership, RolesProfile来实现的。而这些机构的数据,按照默认的设置,是存储在SQL Server Express 数据库中,其还包括如ASP.NET配置信息等其他重要数据。然而,万一我们用的数据库不是Sql Server Express,那怎么办呢?这是我接触到的第一个问题。

1.将数据库移植到自己的开发数据库

VS配带了一个工具来允许我们实现该数据库的迁移,可以迁移到我们自己的SQL Server 版本中。该工具是SQL注册工具,aspnet_regsql.exe在开始菜单中找到Visual Studio 2005中的Visual Studio Tools中选择Open Visual Studio 2005 Command Prompt,输入上面工具名称即可打开工具进行配置。具体的方法和内容,包括使用参数的方法,在网上有一大堆,我就不再啰嗦了。执行最后的结果是可以将Sql Server Express中的实例安装到我们指定的数据库中。

2.如何扩展字段

利用profile

对于Profile的设置,我们需要首先在Web.Config中配置自己所需要的Profile属性,例如Department和 Project. 代码如下:

<anonymousIdentification enabled="true" />

    <profile>

      <properties>

        <add name ="自定义字段名1" allowAnonymous="true"/>

        <add name ="自定义字段名2" allowAnonymous="true"/>

      </properties>   

    </profile>

 

然后再content模板里面自定义模板,添加需要的输入控件。

下面就是需要将数据传回道数据表中了

这里存在个问题,如果创建的是web application的话,系统不会自动创建ProfileCommon 类,需要手工创建。这里还没研究,暂时不写

但是直到如何调用,代码如下:

    protected void CreateUserWizard_CreatedUser(object sender, EventArgs e)
    {        
       ProfileCommon p =  (ProfileCommon)ProfileCommon.Create(CreateUserWizard1.UserName, true);

        p.自定义字段名1= txt自定义字段名1.Text;

        p.自定义字段名1s= txt自定义字段名2.Text;

        p.Save();

     }

 下面介绍没有ProfileCommon 类的方法

其实ProfileCommon 类是继承于ProfileBase类,所以我们可以用ProfileBase类进行操作

实现代码如下

            ProfileBase p = ProfileBase.Create(RegisterUser.UserName, true);

            p.SetPropertyValue("自定义字段名1", txt自定义字段名1.Text);

            p.Save();

完成后,可以看到数据库已将数据写入到aspnet_Profile表中

察看表结果,发现有点像cms的自定义字段存储方法,呵呵,也许可以考虑设置得更复杂一些,后续研究。

posted on 2010-04-15 14:41  widia  阅读(410)  评论(0编辑  收藏  举报