简体   繁体   English

在app.config中创建连接字符串attachdbfilename的相对路径

[英]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=&quot;C:\Users\user\Documents\Visual Studio 2013\Projects\WebApplication3\SVCloginLib\App_Data\demoDB.mdf&quot;;integrated security=True;connect timeout=30;MultipleActiveResultSets=True;App=EntityFramework'" providerName="System.Data.EntityClient" />

This is the interesting part: 这是有趣的部分:

attachdbfilename=&quot;C:\Users\user\Documents\Visual Studio 2013\Projects\WebApplication3\SVCloginLib\App_Data\demoDB.mdf&quot;

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=&quot;.\App_Data\demoDB.mdf&quot;;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=&quot;~\App_Data\demoDB.mdf&quot;;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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM