2013-08-31 25 views
0

我读过所有与此有关的帖子,但无法弄清楚。我试图从表单插入到数据库中,但是当我点击提交按钮并将BookingName传递给后面的代码时,我得到“关键字不支持:'元数据'”。我想我的问题是在web.config。任何帮助真的会被赞赏。仍然得到的.NET试图在数据库中插入但不断获取关键字不支持:'元数据'

挂起这里的错误:

说明:未处理的异常当前Web请求的执行过程中发生。请查看堆栈跟踪以获取有关该错误的更多信息以及源代码的位置。

异常详细信息: System.ArgumentException:不支持的关键字:'metadata'。

源错误:

Line 20:  { 
Line 21:   string connString = System.Configuration.ConfigurationManager.ConnectionStrings["CateringAuthorizationEntities"].ConnectionString; 
Line 22:   SqlConnection conn = new SqlConnection(connString); 
Line 23:   string sql = "INSERT INTO tbBooking (BookingName) VALUES " 
Line 24:      + " (@BookingName)"; 

C#代码:

private void ExecuteInsert(string name) 
{ 
    string connString = System.Configuration.ConfigurationManager.ConnectionStrings["CateringAuthorizationEntities"].ConnectionString; 
    SqlConnection conn = new SqlConnection(connString); 
    string sql = "INSERT INTO tbBooking (BookingName) VALUES " 
       + " (@BookingName)"; 

    try 
    { 
     conn.Open(); 
     SqlCommand cmd = new SqlCommand(sql, conn); 
     SqlParameter[] param = new SqlParameter[1]; 
     //param[0] = new SqlParameter("@id", SqlDbType.Int, 20); 
     param[0] = new SqlParameter("@BookingName", System.Data.SqlDbType.VarChar, 50); 

     param[0].Value = name; 

     for (int i = 0; i < param.Length; i++) 
     { 
      cmd.Parameters.Add(param[i]); 
     } 

     cmd.CommandType = System.Data.CommandType.Text; 
     cmd.ExecuteNonQuery(); 
    } 
    catch (System.Data.SqlClient.SqlException ex) 
    { 
     string msg = "Insert Error:"; 
     msg += ex.Message; 
     throw new Exception(msg); 
    } 
    finally 
    { 
     conn.Close(); 
    } 
} 

protected void BtnCatering_Click(object sender, EventArgs e) 
{ 
    if (Page.IsValid) 
    { 

     //call the method to execute insert to the database 
     ExecuteInsert(BookingName.Text); 
     Response.Write("Record was successfully added!"); 
    } 
} 

的Web.Config:

<connectionStrings> 
<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/> 
<add name="CateringAuthorizationEntities" connectionString="metadata=res://*/App_Code.CateringAuthorization.csdl|res://*/App_Code.CateringAuthorization.ssdl|res://*/App_Code.CateringAuthorization.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=xxxxxx;initial catalog=CateringAuthorization;integrated security=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient"/> 

+0

你能后的异常详细信息? –

+0

@ M.Babcock System.ArgumentException:不支持的关键字:'metadata'。你想要堆栈跟踪? – user1431633

回答

2

看看你的连接它在web.config中包含字元数据。您的连接字符串应该用作实体框架。看看使用Entity Framework来执行你的命令。

您可以创建一个EntityConnection

+0

它通过更改此行来工作:connectionString =“metadata = res://*/App_Code.CateringAuthorization.csdl | res://*/App_Code.CateringAuthorization.ssdl | res://*/App_Code.CateringAuthorization.msl; provider = System.Data.SqlClient; provider provider string = " data source = xxxxx; initial catalog = CateringAuthorization; integrated security = True; multipleactiveresultsets = True; App = EntityFramework "“ to:connectionString =”data source = xxxxx; initial catalog = CateringAuthorization;集成安全性= True; multipleactiveresultsets = True;应用程序= EntityFramework“ – user1431633

+0

如果您更改连接字符串,但实体框架将无法使用它。 –

0

您使用ADO.NET连接(SqlConnection的),它不采取这对于实体框架指定的格式。

尝试 “数据源= MY-PC \ SQL2008;初始目录= CateringAuthorization;集成安全性=真”

相关问题