作者:童振华  (转载请注时作者)

 

       Webpartasp.net 2.0中一项非常出色的功能,但是非常遗憾的是,默认是使用sql express 2005作为后台数据库。而且很多初学者在本机写完程序迁移到服务器上以后才如梦初醒,原来还要后台数据库的,甚至WROX出的《Professional ASP.NET 2.0》在讲webpart这节时都不曾提及后台数据库的事,真是让人失望之极(起码我没看到)。而目前主流的网站都是用MS SQLServer 2000或是Access作为数据库,如何才能把Webpart的数据库从SQL Express 2005迁移到SQLServer 2000Access呢?

 

迁移到SQLServer 2000

 

       微软提供了一个数据库配置程序,可以方便的在SQLServer2000SQLServer2005上进行webpart的数据库配置

       1.首先运行SQLServer

       2.然后运行C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe 会出现一个图形化的操作界面,根据提示便可自动生成一个名为aspnetdb的库。

       3.打开vs.net 2005,新建一个网站,往页面上拖一个webpartmanager,运行一下,出错。因为你还没有配web.config呀,而且vs.net2005vs.net2003有所不同,默认是没有web.config文件的,需要我们自己增加,(当然你也可以直接修改C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG下默认的web.config,但是我不推荐)

       4.在新加的web.config中把  <connectionStrings/>一行修改成如下

  <connectionStrings>

    <remove name="LocalSqlServer" />

    <add name="LocalSqlServer" connectionString="Data Source=localhost;Initial Catalog=aspnetdb;Persist Security Info=True;User ID=sa;Password="

        providerName="System.Data.SqlClient" />

  </connectionStrings>

 

完成后的web.config

<?xml version="1.0" encoding="utf-8"?>

<!--

    注意: 除了手动编辑此文件以外,您还可以使用

    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的

     “网站”->Asp.Net 配置”选项。

    设置和注释的完整列表在

    machine.config.comments 中,该文件通常位于

    \Windows\Microsoft.Net\Framework\v2.x\Config

-->

<configuration>

    <appSettings/>

    <connectionStrings/>

    <system.web>

        <!--

            设置 compilation debug="true" 将调试符号插入

            已编译的页面中。但由于这会

            影响性能,因此只在开发过程中将此值

            设置为 true

        -->

        <compilation debug="false" />

        <!--

            通过 <authentication> 节可以配置 ASP.NET 使用的

            安全身份验证模式,

            以标识传入的用户。

        -->

        <authentication mode="Windows" />

        <!--

            如果在执行请求的过程中出现未处理的错误,

            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,

            开发人员通过该节可以配置

            要显示的 html 错误页

            以代替错误堆栈跟踪。

 

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">

            <error statusCode="403" redirect="NoAccess.htm" />

            <error statusCode="404" redirect="FileNotFound.htm" />

        </customErrors>

        -->

    </system.web>

</configuration>

 

迁移到Access

   webpart的数据库迁移到sqlserver是一件非常方便的事,但是对于很多小型网站来说,access才是最佳选择。但是要将数据库迁移到Access却是一件非常的复杂的事情, 而且网上也没有查到这方面现成的中文资料,之前在微软英文asp.net新闻组发了个贴子也没人回答,有些英文资料也是语焉不详,不成系统。

  下面我来说一下详细的过程。

   首先你需要一个accessProvider以及相对应的数据库。之前我曾经从网上找了一个accessprovider,并尝试把SQLServer版的表导出成Access,结果发现这条路是行不通的,因为不匹配。

       目前在英文google里能找到两个accessProvide

       一个是AccessPersonalizationProvider,下载地址是

http://www.kowitz.net/files/AccessPersonalizationProvider.zip

命名空间为MarkItUp.SingleUserBlog.Web.WebParts.AccessProviders  虽然在源代码注释里也写着copyright是微软的,但是下载时没有对应的数据库。

       另外一个是微软官方网站上的以前Beta1时出的 SampleAccessProviders,解压后自带一个access数据库,而且还有web.config的样例。下载地址是

http://msdn.microsoft.com/vstudio/eula.aspx?id=96713a8e-b8d4-4d6e-bb8f-027e6c8e15d8

我用的是后者。

下载后,名字是SampleAccessProviders.vsi,解压缩后可以在C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Templates\ProjectTemplates\Visual Web Developer\Starter Kits\ASP.NET Access Providers  找到。

你可以用vs.net2005打开Access.csproj编译出dll,名字为SampleAccessProviders.dll,然后把ASPNetDB.mdb复制到App_Data目录,然后在自己的网站中引用SampleAccessProviders.dll,并参考那个web.config修改自己的配置文件。

 

关于其他数据库

由于SampleAccessProviders是开放源代码的,所以参照着自己扩展Provider。目前网上可以找到XmlFilePersonalizationProvider。对于Oracle,mysql等数据库可以自己写扩展Provider,但是目前我们已有了access这种数据库独立的方式,所以可以通过混用来实现更为方便。

 

 

后记:来到埃塞俄比亚当志愿者已有近两个月了,工作一点挑战也没有,又打战了,在这种网络只有56K的鸟地方,真是一种痛苦。百无聊赖之际,想想以前在国内一直没有时间空下来好好研究一下vs.net2005,(主要是更喜欢vs.net 2003的小巧),特写此文,结果写完了,一直上了不博客园,直到今天才打开,真是郁闷呀。

 

posted on 2007-02-06 15:28  使名扬  阅读(1218)  评论(2编辑  收藏  举报