试图在数据库中插入但不断获取关键字不支持:'元数据'
我读过所有与此有关的帖子,但无法弄清楚。我试图从表单插入到数据库中,但是当我点击提交按钮并将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="data source=xxxxxx;initial catalog=CateringAuthorization;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient"/>
看看你的连接它在web.config中包含字元数据。您的连接字符串应该用作实体框架。看看使用Entity Framework来执行你的命令。
您可以创建一个EntityConnection
它通过更改此行来工作: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
如果您更改连接字符串,但实体框架将无法使用它。 –
您使用ADO.NET连接(SqlConnection的),它不采取这对于实体框架指定的格式。
尝试 “数据源= MY-PC \ SQL2008;初始目录= CateringAuthorization;集成安全性=真”
你能后的异常详细信息? –
@ M.Babcock System.ArgumentException:不支持的关键字:'metadata'。你想要堆栈跟踪? – user1431633