我的连接字符串出了什么问题?

时间:2015-01-30 23:13:54

标签: c# asp.net-mvc entity-framework

我正在尝试创建一个ASP.NET MVC应用程序,但是整天都在苦苦挣扎,甚至从数据库设置中获取模型。令人沮丧的是,当我从数据库创建ADO.NET模型时生成了连接字符串,并且它不喜欢它。

web.config 中的连接字符串:

<add name="DefaultConnection" 
     connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True" 
     providerName="System.Data.SqlClient"
     />
<add name="DatabaseEntities" 
   connectionString="metadata=res://*/Models.DatabaseModels.csdl|res://*/Models.DatabaseModels.ssdl|res://*/Models.DatabaseModels.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\Database.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
   providerName="System.Data.EntityClient"
   />

声明触发了异常:

using (SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["DatabaseEntities"].ConnectionString))
{..}

'ArgumentException'不支持关键字:'元数据'。

解: 当LTMOD回答时,我需要web.config中的两个连接,初始SqlClient和生成的EntityClient连接。我需要在'using'语句中使用SqlClient连接字符串,并在块中调用con.Open()。

2 个答案:

答案 0 :(得分:1)

实体和ADO的连接字符串有些不同。在我的项目中,我通常都有。像这样:

<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=SERVER;Initial Catalog=DBNAME;User ID=USER;Password=PWD;" providerName="System.Data.SqlClient" />
<add name="Entities" connectionString="metadata=res://*/Models.PTModel.csdl|res://*/Models.PTModel.ssdl|res://*/Models.PTModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=SERVER;initial catalog=DBNAME;user id=USER;password=PWD;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

ADO使用DefaultConnection,而实体访问自动使用实体连接。

这有很多原因。首先,有时候构建一个SQL查询来执行任务比使用LINQ / Lambda更容易。在很多情况下,所有工作都需要在DB中进行,并且通过这两种连接可以轻松地完成此任务。

答案 1 :(得分:0)

  • 您对DatabaseEntities访问层使用了ADO.net 连接适用于实体框架。

  • 不需要ADO.net的2个连接字符串,您需要 它们仅在使用EDMX文件时用于EF,因为除模型连接字符串(DefaultConnection)外,它们还需要DatabaseEntities

  • 使用DefaultConnection如果仍然出现错误,则表示您的连接字符串不正确,请使用visual studio连接到您的数据库并将连接字符串复制到您的web.config文件。

var connectionString = 
         ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
using (SqlConnection con = new SqlConnection(connectionString){...}