Могу ли я удалить параметр из Dapper DynamicParameters? - PullRequest
0 голосов
/ 26 июня 2019

Я получаю данные из внешнего источника. Мой класс соответствует ответу JSON. Однако внутри json есть внутренний объект. Как я могу удалить его, когда я передаю его динамическим параметрам в Dapper?

Базовая структура класса

{
   "name": "John",
   ... 30 more fields here ...

   "location": {
       "city": "abcd", 
       "zip": "87123"
    }
}

Используя это как:

foreach (var result in response.results) 
{
    var parameters = new DynamicParameters();
    parameters.AddDynamicParams(result);

    // I need to remove "location" from this parameter
    // and then I can add the city and zip

    parameters.AddDynamicParams(result.location.city); // etc

    db.Execute("save_data", parameters, commandType:CommandType.StoredProcedure);
}

1 Ответ

0 голосов
/ 27 июня 2019

Все еще жду ответа, но вот обходной путь, который я начал использовать

foreach (var result in response.results) {
  var parameters = new DynamicParameters();

  foreach (PropertyInfo prop in result.GetType().GetProperties()) {

      if (!SpecialParameter(result, prop, parameters))
         parameters.Add(prop.Name, prop.GetValue(result, null));

  }

  db.Execute("save_data",
         parameters, commandType: CommandType.StoredProcedure);
}    


function SpecialParameter(result, prop, parameters) {
// can be implemented in the sub class

   switch (prop.Name) {
      case "location":
         parameters.Add("location_city", result.city);
         parameters.Add("location_state", result.city);
         return true;
   }

  return false;
}
...