今天第一次记录自己的学习过程到博客,希望可以和大家一起交流和进退,请大家多多指教。
今天学习的是.net自带的Login系列控件,Login一系列的控件均是结合Membership, Roles和Profile来实现的。而这些机构的数据,按照默认的设置,是存储在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 类是继承于ProfileBase类,所以我们可以用ProfileBase类进行操作
实现代码如下
ProfileBase p = ProfileBase.Create(RegisterUser.UserName, true);
p.SetPropertyValue("自定义字段名1", txt自定义字段名1.Text);
p.Save();
完成后,可以看到数据库已将数据写入到aspnet_Profile表中
察看表结果,发现有点像cms的自定义字段存储方法,呵呵,也许可以考虑设置得更复杂一些,后续研究。