我得到了例外
基础提供程序在 ConnectionString 上失败。
除了内部异常
键“attachdbfilename”的值无效
在我尝试部署和调试我的应用程序时,在 Windows 7 家庭高级虚拟机上。
但是,在我的开发机器上,应用程序刚刚启动而没有问题。
连接字符串是:
<add name="AssetsLocalDBEntities" connectionString="metadata=res://*/AssetsLocalDB.csdl|res://*/AssetsLocalDB.ssdl|res://*/AssetsLocalDB.msl;provider=System.Data.SqlClient;provider connection string="data source=(localdb)\v11.0;attachdbfilename=|DataDirectory|\AssetDatabase.mdf;initial catalog=AssetDBSource;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Steve Wellens 在这个主题中提到了连接字符串包含垃圾: The underscient provider failed on ConnectionString
然而,正如 Maxim Gueivandov 所回答的,这应该是有效的连接字符串,因为它是由 EntityFramework 的 edmx 设计器直接生成的。至少,我相信它是有效的,因为它确实在开发机器上工作。
同样在另一个主题(实体框架 - ConnectionString 上的基础提供程序失败)中,接受的答案是删除“ 并用 \" 替换它们,因为该字符串是 c# 代码中的文字,但我仍然在 xml 中有我的连接字符串,所以不能简单地替换 "。on-connectionstring
虚拟机上安装的 .NET 版本是 4.0.30319,MsSQL Server Express LocalDB 是 11.0.2318.0,所以我相信它们都是最新的。
编辑:如果我删除“|DataDirectory|” 从连接字符串中,我在开发机器上收到以下错误:
无法将文件“AssetDatabase.mdf”附加为数据库“AssetDBSource”。
所以我也删除了“初始目录= AssetDBSource”,我得到了
尝试为文件 AssetDatabase.mdf 附加自动命名的数据库失败。存在同名数据库,或无法打开指定文件,或位于 UNC 共享上。
我可以想象这是因为它不知道去哪里看?所以,我为它提供了完整路径(C:..\AssetDatabase.mdf),它可以工作。
所以剩下的问题是:我如何获得使用 LocalDB 的相对路径?