Sql server 从项目文件夹获取database.mdf的直接路径-文件已移动

Sql server 从项目文件夹获取database.mdf的直接路径-文件已移动,sql-server,vb.net,Sql Server,Vb.net,我正在尝试获取本地数据库的直接路径 我将数据库放在我的主项目文件夹中: 然后我使用以下代码获取路径: Dim cn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" + My.Application.Info.DirectoryPath + "\database\database.mdf;Integrated Security=True;User Instance=True") 现在一切都好了 那么,为什么要将

我正在尝试获取本地数据库的直接路径

我将数据库放在我的主项目文件夹中:

然后我使用以下代码获取路径:

Dim cn As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" + My.Application.Info.DirectoryPath + "\database\database.mdf;Integrated Security=True;User Instance=True")
现在一切都好了

那么,为什么要将数据库复制到
\bin\Debug
文件夹中呢

然后,如果我打开源代码并运行项目,并尝试在
\bin\Debug
中保存数据或从应用程序中查找以前保存的数据,我是否找不到它?为什么?

我的意思是

  • 如果我从
    \bin\Debug
    运行项目,它将保存

  • 如果我从(.sln)的project1文件夹运行项目,并尝试显示数据表,我可能找不到保存的数据

  • 事实恰恰相反


  • 下面是它的工作原理。将数据文件添加到项目中,该文件是源文件。您可以在该文件中构建模式,还可以向该文件添加任何默认数据。但是,您不使用该文件进行测试和调试。使用测试数据污染该文件,然后在发布应用程序时没有干净的数据库可与应用程序一起部署,这有什么意义

    生成时,该源文件将复制到输出文件夹。如果生成调试版本,数据文件将被复制到调试文件夹中,这就是您将其与测试数据弄乱的地方。当您的应用程序准备好部署时,您将切换到发布版本,并在发布文件夹中创建源数据库的干净拷贝

    默认情况下,该源文件的
    复制到输出目录
    属性设置为
    始终复制
    。这意味着,每当您运行项目并且对任何源文件进行更改时,新的副本将覆盖调试文件夹中已有的副本,并且您上次调试时所做的任何更改都将丢失。如果将该属性更改为
    Copy If Newer
    ,则仅当更改源数据文件时,才会创建新副本。这允许您在调试运行之间保留更改。要强制刷新,只需执行清理或手动删除副本