2013-08-31 21 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;集成安全性=真」

相關問題