Dapper с проблемой обновления и вставки MS Access

Я использую Dapper для обновления и вставки базы данных Access. Код работает, не выдает исключение, но не обновляет значение в БД. Ниже мой код

sql.Append("UPDATE drugs_repository SET drug_name = @DrugName ");

sql.Append(" WHERE id = @DrugId");

var parameters = new
{
    DrugName = objDrug.DrugName,                           
    DrugId = objDrug.DrugId
};
var t = connection.Query<string>(sql.ToString(), parameters);

Может кто-нибудь, пожалуйста, дайте мне знать, что именно мне не хватает в приведенном выше коде? Когда я жестко кодирую значение, чем его обновление в БД. Так что, вероятно, это связано с параметром.


person techknackblogs    schedule 20.10.2013    source источник
comment
Получил проблему. В файле SqlMapper.cs Dapper я удалил orderby из //IEnumerable‹PropertyInfo› props = type.GetProperties().Where(p => p.GetIndexParameters().Length == 0).OrderBy(p => p.Name );. сейчас работает нормально. Не уверен, что удаление orderby будет иметь какие-либо последствия. Предложения будут оценены.   -  person techknackblogs    schedule 20.10.2013
comment
+1 Молодец! Поскольку '@DrugName' > '@DrugId' на .OrderBy менялся порядок параметров, а Access.OLEDB требует, чтобы параметры создавались в том порядке, в котором они появляются в SQL CommandText.   -  person Gord Thompson    schedule 20.10.2013


Ответы (1)


Если вы нервничаете из-за возможных побочных эффектов от удаления .OrderBy() в коде Dapper, то обходной путь будет состоять в том, чтобы назвать ваши параметры таким образом, чтобы они сортировались в том же порядке, что и в команде SQL. Например, я подозреваю, что немодифицированный код Dapper, вероятно, будет нормально работать, если параметры будут называться @1DrugName и @2DrugId.

person Gord Thompson    schedule 20.10.2013
comment
Спасибо за идею. На самом деле я использовал старую версию Dapper. В последней версии это исправлено. В любом случае спасибо за ответ. techknackblogs.com - person techknackblogs; 24.10.2013
comment
Я думаю, что проблема все еще существует, если только порядок не будет сохранен оператор обновления частично не работает"> stackoverflow.com/questions/39339478/ - person RobinAtTech; 07.09.2016