【问题标题】:How do I properly set the DataDirectory in a web project connection string?如何在 Web 项目连接字符串中正确设置 DataDirectory?
【发布时间】:2011-07-13 17:19:55
【问题描述】:

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

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

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

attachdbfilename=|DataDirectory|\Test.mdf

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

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

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

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

A) 在不使用硬编码的绝对路径的情况下,有没有更好的方法来获取连接字符串以使用 bin 文件夹?

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    然后您可以在 Global.ascx.cs 中的 Application_Start 中设置路径

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

    我知道这回答了你问题的 B 部分,但不是 A 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 2020-09-18
      • 1970-01-01
      相关资源
      最近更新 更多