Asked by:
Failed to convert parameter value from a XElement to a String.

Question
-
User-1976337891 posted
Hi,
when passing XElement to a stored procedure as an argument, i get this exception. "Failed to convert parameter value from a XElement to a String."
var allValues = (from val in value.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)
select int.Parse(val)).ToList();
var States = (from st in filtersModel.States
where allValues.Contains(st.StateId)
select st.StateId).ToList();
states = XElement("States", States.Select(i => new XElement("StateId", i)));db.AddInParameter(dbCommand, "States", DbType.Xml, states);
exception is:
System.InvalidCastException: Failed to convert parameter value from a XElement to a String. ---> System.InvalidCastException: Object must implement IConvertible.
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType)
--- End of inner exception stack trace ---
at System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType)
at System.Data.SqlClient.SqlParameter.GetCoercedValue()
at System.Data.SqlClient.SqlParameter.Validate(Int32 index, Boolean isCommandProc)
at System.Data.SqlClient.SqlCommand.SetUpRPCParameters(_SqlRPC rpc, Int32 startCount, Boolean inSchema, SqlParameterCollection parameters)
at System.Data.SqlClient.SqlCommand.BuildRPC(Boolean inSchema, SqlParameterCollection parameters, _SqlRPC& rpc)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
at Microsoft.Practices.EnterpriseLibrary.Data.Database.DoLoadDataSet(IDbCommand command, DataSet dataSet, String[] tableNames) in C:\EntLib41Src\Blocks\Data\Src\Data\Database.cs:line 491
at Microsoft.Practices.EnterpriseLibrary.Data.Database.LoadDataSet(DbCommand command, DataSet dataSet, String[] tableNames) in C:\EntLib41Src\Blocks\Data\Src\Data\Database.cs:line 1366
at Microsoft.Practices.EnterpriseLibrary.Data.Database.LoadDataSet(DbCommand command, DataSet dataSet, String tableName) in C:\EntLib41Src\Blocks\Data\Src\Data\Database.cs:line 1319
at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteDataSet(DbCommand command) in C:\EntLib41Src\Blocks\Data\Src\Data\Database.cs:line 563
at RoadBrake.Models.RoadBrakeDB.GetExitDetailsExtension(Double latitude, Double longitude, Int64 highwayexitid, XElement states, XElement highways, XElement cities, XElement exits, Nullable`1 distanceFromExit, Boolean beyondDistance, XElement categories, XElement chains, Int32 excludeFromResults, XElement indEntities, XElement cuisines, XElement favDishes, XElement alcohols, String keyWords, XElement diningOptions, XElement openPeriods, Nullable`1 priceRangeLow, Nullable`1 priceRangeHigh, Boolean fineDining, Boolean kidsMenu, Boolean barMenu, Boolean acceptsCrediCards, XElement takesReservations, XElement specialFeatures, Nullable`1 recentlyReviewedInLastDays, Nullable`1 recentlyAddedInLastDays, Nullable`1 mostPeopleBrake, Nullable`1 businessesReviewed, Nullable`1 favoriteBusiness, Nullable`1 topRated, Nullable`1 topFoodQuality, Nullable`1 topService, Nullable`1 topAtmosphere, Nullable`1 topKidFriendly, Nullable`1 topRestroomQuality) in C:\HOME\RoadBrake\WebServices RoadBrake\RoadBrake\Models\RoadBrakeDB.cs:line 243
at RoadBrake.RBService.GetExitDetailsExtnV3(String strLatitude, String strLongitude, String highwayexitid, String ExitNo, Int32 HighwayId, String HighwayName, Double exitdistance, String strStates, String strHighways, String strCities, String strCategories, String strChains, String strCuisines, String strFavDishes, String strAlcohol, String strDining, String strFeatures, String totalRating, String restroomrating, String kidsrating, String strFoodQuality, String strServiceQuality, String strAtmosphere, String distance, String exits, String businesses, String keywords, String numReviews, String reviewedinLastDays, String rbPercent, String numFavs, String addedInLastDays, String strDiningReservations, String strDiningOthers, String strDiningOpenFor, String strPriceLow, String strPriceHigh, String strWifi, String strBusinessType) in C:\HOME\RoadBrake\WebServices RoadBrake\RoadBrake\Services\RBService.asmx.cs:line 1213Tuesday, March 13, 2012 9:47 AM
All replies
-
User1109032460 posted
I'd try calling states.ToString() when you add it in as a parameter.
Thursday, March 15, 2012 5:19 AM