我有一个使用LocalDb和DbContext的Windows窗体应用程序。这在我的开发盒上工作正常,但是当部署到另一个盒子时我无法使它工作。
在我的app.config中,我使用:
实例化一个名为LocalDb的实例 <system.data.localdb>
<localdbinstances>
<add name="LocalProvergience" version="11.0" />
</localdbinstances>
</system.data.localdb>
我的连接字符串是:
<add name="LocalProvergienceEntities"
connectionString="metadata=res://*/ProvergienceModel.csdl|
res://*/ProvergienceModel.ssdl|
res://*/ProvergienceModel.msl;
provider=System.Data.SqlClient;
provider connection string="data source=(localdb)\LocalProvergience;
initial catalog=LocalProvergience;integrated security=True;
multipleactiveresultsets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
如果我包括:
AttachDbFilename=|DataDirectory|\LocalProvergience.mdf;
在连接字符串中,我得到“attachdbfilename的Invald键值”错误。
如果我排除AttachDbFilename,我会收到“与SQL服务器建立连接时发生网络相关或特定于实例的错误”错误。
几个问题:
如果这是“System.Data.LocalDb”,那么providerName设置为“System.Data.EntityClient”?
答案 0 :(得分:1)
调试运行应用时AppDomain.CurrentDomain.GetData("DataDirectory")
相等的内容?如果为null,则可以使用
AppDomain.CurrentDomain.SetData(
"DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ""));
我刚刚遇到了这个问题,使用了我的AttachDBFilename = | DataDirectory | database.mdf,我认为它不需要额外的\因为Path.Combine。
另外我注意到运行SQLlocalDB信息时v11.0属性自动创建,是,不确定在指定命名实例时是否有所不同。