localdb 位置如何工作?

How does localdb location work?

我正在尝试位于

的 Dev Express 演示应用程序
C:\Users\Public\Documents\DevExpress Demos 15.2\DevExtreme\DXHotels

Web.config 具有连接字符串

<add name="DXHotelsStore" connectionString="data source=(localdb)\devextreme;attachdbfilename=|DataDirectory|\HotelDB.mdf;integrated security=True;multipleactiveresultsets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

数据文件存在于

C:\Users\Public\Documents\DevExpress Demos 15.2\DevExtreme\DXHotels\App_Data\HotelDB.mdf

解决方案文件在

C:\Users\Public\Documents\DevExpress Demos 15.2\DevExtreme\DXHotels

我不明白为什么位置 (localdb)\devextreme 转换为 .mdf 所在的文件夹。

当我 运行 解决方案时,它是如何计算出位置的?

[更新] question here 解释了为什么在 App_Data 文件夹中创建数据库,但没有解释为什么使用 (localdb)devextreme。

[更新] 以下问题也很相关 My support question at Dev Express

LocalDB 是一个 developer-oriented 数据库实例,它不是实际实例,这意味着没有服务 运行。从开发人员的角度来看,优点是不需要安装或维护,因为您之前使用的是 SQL Server Express 安装或任何其他 full-type SQL 服务器版本。 需要注意的是,您不会获得命名管道,并且所有内容都受限于本地连接。另一方面,您仍然可以创建命名实例,也称为 LocalDB 私有实例 - 像往常一样,您可以使用 (LocalDB)\ 连接到它们。由于 LocalDB 端没有实际的附件,指定数据库的名称就像 "attach" 一样的过程。 希望这有帮助。

DevExpress 支持的 Nikolai 回答

"v11.0" 是在安装 LocalDB 时创建的通用 SQL Server Express LocalDb 实例。由于此实例的名称取决于 Visual Studio 的当前版本,因此在启动我们的演示时可能会出现问题。这就是我们不在连接字符串中使用此名称的原因。为了解决这个问题,我们选择了在构建演示项目时创建的自己的实例名称。请参阅演示项目设置中的构建事件选项卡。

我检查了构建事件,Post-build 事件命令行是

   sqllocaldb create "devextreme" 2>nul 1>nul
   sqllocaldb start "devextreme" 2>nul 1>nul
   exit 0