[英]Create relative path to connection string attachdbfilename in app.config
This is my EF entities connection string, at the moment the AttachDbFile
string is the full path of the database, and won't work when I deploy the site. 这是我的EF实体连接字符串,目前
AttachDbFile
字符串是数据库的完整路径,并且在部署站点时不起作用。 How do I make a relative path for my AttachDbFile
? 如何为我的
AttachDbFile
创建相对路径?
<add name="demoDBEntities" connectionString="metadata=res://*/SalongModel.csdl|res://*/SalongModel.ssdl|res://*/SalongModel.msl;provider=System.Data.SqlClient;provider connection string='data source=(LocalDB)\v11.0;attachdbfilename="C:\Users\user\Documents\Visual Studio 2013\Projects\WebApplication3\SVCloginLib\App_Data\demoDB.mdf";integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />
This is the interesting part: 这是有趣的部分:
attachdbfilename="C:\Users\user\Documents\Visual Studio 2013\Projects\WebApplication3\SVCloginLib\App_Data\demoDB.mdf"
I've tried the most obvious ones to me: 我已经尝试过最明显的方法:
<add name="demoDBEntities" connectionString="metadata=res://*/SalongModel.csdl|res://*/SalongModel.ssdl|res://*/SalongModel.msl;provider=System.Data.SqlClient;provider connection string='data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|demoDB.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />
<add name="demoDBEntities" connectionString="metadata=res://*/SalongModel.csdl|res://*/SalongModel.ssdl|res://*/SalongModel.msl;provider=System.Data.SqlClient;provider connection string='data source=(LocalDB)\v11.0;attachdbfilename=".\App_Data\demoDB.mdf";integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />
<add name="demoDBEntities" connectionString="metadata=res://*/SalongModel.csdl|res://*/SalongModel.ssdl|res://*/SalongModel.msl;provider=System.Data.SqlClient;provider connection string='data source=(LocalDB)\v11.0;attachdbfilename="~\App_Data\demoDB.mdf";integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />
And loads more, all give me: 和更多的负载,都给我:
The underlying provider failed on Open.
基础提供程序在打开时失败。
Its for ac# Rest service, if it makes any difference 如果有任何区别,则用于ac#Rest服务
You can use the |DataDirectory|
您可以使用
|DataDirectory|
value to specify the App_Data
folder in your project. 值以在项目中指定
App_Data
文件夹。 You do however need to separate the value with a slash: 但是,您确实需要用斜杠将值分开:
<add name="demoDBEntities" connectionString="metadata=res://*/SalongModel.csdl|res://*/SalongModel.ssdl|res://*/SalongModel.msl;provider=System.Data.SqlClient;provider connection string='data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\demoDB.mdf;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />
You may also have to set the value for DataDirectory
like this in your application's initialisation method (eg Application_Start
in global.asax.cs
): 您可能还需要在应用程序的初始化方法中设置
DataDirectory
的值,例如:(例如global.asax.cs
Application_Start
):
AppDomain.CurrentDomain.SetData("DataDirectory",
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.