मुझे यह त्रुटि मिल रही है:

System.ArgumentException HResult=0x80070057 Message=ऑब्जेक्ट प्रकार System.Collections.Generic.List`1[[System.Data.SqlClient.SqlParameter, System.Data, Version=4.0.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 से कोई मैपिंग मौजूद नहीं है ]] एक ज्ञात प्रबंधित प्रदाता देशी प्रकार के लिए। स्रोत=<अपवाद स्रोत का मूल्यांकन नहीं कर सकता>

मैंने गुगल किया है, और उदाहरण हैं जहां कोई व्यक्ति SqlParameter मान के टेक्स्ट मान के बजाय किसी ऑब्जेक्ट का उपयोग करने का प्रयास करता है। जैसे, वे someControl.Text के बजाय someControl का उपयोग करने का प्रयास करते हैं। मेरे मामले में, नीचे, toStatus और fromStatus पहले से ही तार हैं। मुझे यकीन नहीं है कि समस्या और क्या हो सकती है। मुझे किसकी याद आ रही है?

public void UpdateStatus(SearchCriteria searchCriteria, string fromStatus, string toStatus)
{
  var sql = new StringBuilder();
  var sqlParameters = new List<SqlParameter>();

  sql.Append("UPDATE Schema.Table SET Status = @toStatus WHERE Status = @fromStatus");

  sqlParameters.Add(new SqlParameter("@toStatus", toStatus) { SqlDbType = SqlDbType.VarChar });
  sqlParameters.Add(new SqlParameter("@fromStatus", fromStatus) { SqlDbType = SqlDbType.VarChar });

  db.ExecuteSqlCommand(sql.ToString(), sqlParameters);
}
0
Bob Horn 26 जून 2018, 21:38

1 उत्तर

सबसे बढ़िया उत्तर

ExecuteSqlCommand List के बजाय एक सरणी की अपेक्षा करता है।
नीचे के रूप में प्रयोग करें

db.ExecuteSqlCommand(sql.ToString(), sqlParameters.ToArray());
2
pfx 26 जून 2018, 21:43