我如何在所有电脑上运行一个连接字符串?

时间:2013-05-24 11:43:41

标签: c# sql connection-string

在制作新窗口后,connection string出现问题无效 它说

  

发生与网络相关或特定于实例的错误   建立与SQL Server的连接

这是我的连接字符串:

<add name="storemanagerEntities1"
     connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.;AttachDbFilename=F:\ENjaz\KKKK\Store-Manager\Store-Manager\storemanager.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;Initial Catalog=storemanager;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True&quot;"
     providerName="System.Data.EntityClient"/> 

有没有办法让connection work在任何地方?

1 个答案:

答案 0 :(得分:1)

更改连接字符串的这一部分

AttachDbFilename=|DataDirectory|\Store-Manager\storemanager.mdf

DataDirectory是一个替换字符串,可以使用

从您的程序控制
AppDomain.CurrentDomain.SetData("DataDirectory", ".....");

这应该在调用任何数据访问代码之前完成 当然,在目标PC上,你应该确保拥有路径的相对部分

让我举一个实际的例子。

您使用此

设置连接字符串
....;AttachDbFilename=|DataDirectory|\storemanager.mdf;....

在目标PC中,将数据库文件部署在名为Store-Manager的子文件夹中,并将其创建为CommonApplicationData文件夹的子文件夹
(在Win7上这是C:\ programdata) 然后,在代码内部,在任何数据访问代码之前,编写

string appPath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(appPath, "Store-Manager");

当然,在目标PC上应该已经安装了Microsoft Sql Server Express(或不安装)。

请参阅Microsoft forums上的这篇文章,或this same site

上的这个问题