我的解决方案有一个带有数据库(我的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>
答案 0 :(得分:1)
在您的网络项目中,您应该能够通过以下方式找到路径:
string path = Server.MapPath("~/bin/Test.mdf");
然后,您可以在Global.ascx.cs
中的Application_Start
中设置路径
AppDomain.CurrentDomain.SetData("DataDirectory", path);
我意识到这回答了你问题的B部分而不是A部分。