如何在Web项目连接字符串中正确设置DataDirectory?

时间:2011-07-13 17:19:56

标签: c# visual-studio-2010 connection-string

我的解决方案有一个带有数据库(我的DAL)的类lib项目,以及一个充当WCF服务层的Web项目。

我在Web项目中添加了对DAL项目的引用,当我编译时,我的数据库被复制到Web项目的Bin文件夹中。

Web.config文件需要连接字符串。如果我使用:

attachdbfilename=|DataDirectory|\Test.mdf

它在App_Data文件夹中查找数据库。

我可以轻松地将数据库的副本放在App_Data文件夹中,但是,在开发的这个阶段我经常更改模式(通过DAL中的副本),并且希望项目能够获取版本复制到WCF图层bin文件夹。

我知道我可以用这个改变默认的DataDirecty:

AppDomain.CurrentDomain.SetData("DataDirectory", path);

A)不使用硬编码的绝对路径,是否有更好的方法让连接字符串使用bin文件夹?

B)如果我确实更改了默认的DataDirectory设置,我如何以编程方式获取bin文件夹的绝对引用?

<Rant> Visual Studio 2010不应该足够聪明地实现项目类型,而不是将数据库从引用的程序集中拉到bin文件夹中,而是使用App_Data文件夹吗? </Rant>

1 个答案:

答案 0 :(得分:1)

在您的网络项目中,您应该能够通过以下方式找到路径:

string path = Server.MapPath("~/bin/Test.mdf");

然后,您可以在Global.ascx.cs

中的Application_Start中设置路径
AppDomain.CurrentDomain.SetData("DataDirectory", path);

我意识到这回答了你问题的B部分而不是A部分。