|DataDirectory|的使用

Ado.net2.0中新增加了一个MagicValue,可以在应用程序的配置文件的数据库链接串种使用|DataDirectory| ,例如: 

< connectionStrings >
         < add  name ="ConnectionString"  
             connectionString
="data source=.;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\test.mdf;"  providerName ="System.Data.SqlClient"   />
     </ connectionStrings >


原来一直使用ASP.net开发web应用,asp.net 2.0特有几个特殊的文件夹App_Data就是其中一个,web应用的数据库大可以放在这个下面,一直工作的很好。

 

......直到有一天开始写winform的程序,^_^,当然也想享受这种方便啦,可是发现Windows应用项目中不支持特殊的文件夹,根本没有这种东西!没关系咱自己建,还叫App_Data,运行发现数据库连不上,从错误信息中来看,原来Winform中把|DataDirectory|翻译成了程序启动目录apppath\bin\debug(或release),后面不带App_Data!数据库文件倒是自动复制到了运行目录下.

注:使用Debug模式|DataDirectory|将翻译成:apppath\bin\debug,Release模式翻译为:apppath\bin\debug\release文件夹.

这样非常麻烦,难不成我还要在发布的时候更换数据库存放目录?
有位我不认识的老外^_^给出了解决办法:

http://blogs.msdn.com/dataaccess/archive/2005/10/28/486273.aspx

就是在程序启动时,设置AppDomain.CurrentDomain.setData(“DataDirectory”,我的目录字符串);该方法重新设置|DataDirectory|的目录.Winform的程序那当然是在Main函数中了,废话不说了,我的代码如下:

          string p = AppDomain.CurrentDomain.BaseDirectory;
             if (p.IndexOf( " \\bin\\ ") >  0)
            {
                 if (p.EndsWith( " \\bin\\Debug\\ "))
                    p = p.Replace( " \\bin\\Debug """);
                 if (p.EndsWith( " \\bin\\Release\\ "))
                    p = p.Replace( " \\bin\\Release """);
            }
             if (!p.EndsWith( " App_Data\\ "))
                p = p +  " App_Data\\ ";
            AppDomain.CurrentDomain.SetData( " DataDirectory ", p);

思想就是去掉调试期间(DEBUG)和发布期间(Release)的不同,这样要注意的是,发布程序的时候,数据库也要放到App_Data目录下面。
下面的代码起同样的效果,代码如下:

            string dataDir = AppDomain.CurrentDomain.BaseDirectory;
             if (dataDir.EndsWith( @" \bin\Debug\ ")
            || dataDir.EndsWith( @" \bin\Release\ "))
            {
                dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName +  " \\App_Data ";
                AppDomain.CurrentDomain.SetData( " DataDirectory ", dataDir);
            }

数据库连接配置文件与最上面asp.net的web.config配置完全相同,注意在WinForm中并不存在App_Data文件夹这个特殊文件夹,我们只需新建文件夹改名为App_Data,然后将数据库文件放入该文件夹即可.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值