使用EF Code First更改localdb的路径



我正在将应用程序的设置更改为clickonce应用程序。

我使用的是SQL Server Express和EntityFramework的代码优先方法。

数据库的MDF存储在%USERPROFILE%/database.MDF。现在我必须将位置更改为%USERPROFILE%/AppData/Local/Apps/…

我尝试使用这个连接字符串

connectionString="data source=(LocalDb)MSSQLLocalDB;initial catalog=MIADbContext;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|database.mdf" 

但是有了这个连接字符串,我得到了一个错误:

System.ArgumentException: Expansion of |DataDirectory| failed while processing the connection string. Ensure that |DataDirectory| is set to a valid fully-qualified path.

我不知道为什么这不起作用。有什么解决办法吗?

您可以通过3个步骤更改localDB的路径

  1. 分离数据库
  2. 将localdb数据库复制并粘贴到其他位置
  3. 将数据库附加到新位置

查询以分离数据库

EXEC sp_detach_db 'aspnet-IdentityApplication-E2BBF1E6-123-4567-8910-07BC0413419B', 'true';   

查询以附加DB

CREATE DATABASE [aspnet-IdentityApplication-E2BBF1E6-123-4567-8910-07BC0413419B]  
ON (FILENAME = 'D:Testaspnet-IdentityApplication-E2BBF1E6-123-4567-8910-07BC0413419B.mdf'),   
(FILENAME = 'D:Testaspnet-IdentityApplication-E2BBF1E6-123-4567-8910-07BC0413419B_log.ldf')   
FOR ATTACH;