【发布时间】:2013-10-20 15:37:19
【问题描述】:
我正在使用 Dapper 更新和插入 Access DB。代码工作不抛出异常,但不更新数据库中的值。下面是我的代码
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);
有人可以让我知道我在上面的代码中到底缺少什么吗? 当我对值进行硬编码而不是在数据库中更新时。所以可能与参数有关。
【问题讨论】:
-
得到了问题。在 Dapper 的 SqlMapper.cs 文件中,我从 "//IEnumerable
props = type.GetProperties().Where(p => p.GetIndexParameters().Length == 0).OrderBy(p => p.姓名);”。它现在工作正常。不确定删除 orderby 是否会产生任何影响。建议将不胜感激。 -
+1 干得好!因为
'@DrugName' > '@DrugId'.OrderBy正在交换参数的顺序,而 Access.OLEDB 要求按照它们在 SQL CommandText 中出现的顺序创建参数。