【问题标题】:SqlConnection error "Keyword not supported: 'metadata'."SqlConnection 错误“不支持关键字:‘元数据’。”
【发布时间】:2018-04-26 13:57:14
【问题描述】:

我正在尝试使用 ASP.NET MVC 将 Excel 文件导入到我的数据库中,但出现此错误:

System.ArgumentException:不支持关键字:“元数据”

关于连接

SqlConnection con = new SqlConnection(conn);

在这部分代码中:

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
    string conn = ConfigurationManager.ConnectionStrings["RéceptionEntities"].ConnectionString;

    SqlConnection con = new SqlConnection(conn);
    string query = "Insert into Réception_camions(Date_d_arrivée,heure_d_arrivée,Poids_cam,Id_cam,Id_qualité) Values('" + ds.Tables[0].Rows[i][0].ToString() + "','" + ds.Tables[0].Rows[i][1].ToString() + "','" + ds.Tables[0].Rows[i][2].ToString() + "','" + ds.Tables[0].Rows[i][3].ToString() + "','" + ds.Tables[0].Rows[i][4].ToString() + "')";

    con.Open();
    SqlCommand cmd = new SqlCommand(query, con);
    cmd.ExecuteNonQuery();
    con.Close();
}

我的连接字符串:

<add name="RéceptionEntities" 
     connectionString="metadata=res://*/Models.MVCTutorialModel.csdl|res://*/Models.MVCTutorialModel.ssdl|res://*/Models.MVCTutorialModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=LOl-PC\connect;initial catalog=Réception;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

如何解决这个问题?谢谢!

【问题讨论】:

  • 好吧,既然我们看不到您的连接字符串的值,我们可能无能为力,只能告诉您它可能格式错误。也许this thread 可能会有所帮助?
  • 你的连接字符串的格式是什么?
  • 我编辑了我的问题并添加了连接字符串。请再看一遍。
  • 您通过SqlConnection连接的连接字符串应该是data source=LOl-PC\connect;initial catalog=Réception;integrated security=True;MultipleActiveResultSets=True
  • 如何更改语法,谢谢帮助。

标签: sql-server asp.net-mvc


【解决方案1】:

您所拥有的连接字符串用于数据库优先连接。这适用于 EF,但不适用于 SqlConnection

所以你需要做的是拥有 2 个连接字符串 - 保持一个存在,然后像这样添加另一个:

<add name="RéceptionEntities_SQL" 
     connectionString="data source=LOl-PC\connect;initial catalog=Réception;integrated security=True;MultipleActiveResultSets=True" 
     providerName="System.Data.SqlClient" />

当您需要使用原始 SQL 连接到您的数据库时,您只需引用另一个连接字符串:

var conn = ConfigurationManager.ConnectionStrings["RéceptionEntities_SQL"].ConnectionString;
var con = new SqlConnection(conn);

只需要记住在部署或更新其中一个字符串时更新两个连接字符串。

这里是一些阅读:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2015-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多