带有 MS Access 更新和插入问题的 Dapper

Posted

技术标签:

【中文标题】带有 MS Access 更新和插入问题的 Dapper【英文标题】:Dapper with MS Access Update and Insert issue 【发布时间】: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' &gt; '@DrugId' .OrderBy 正在交换参数的顺序,而 Access.OLEDB 要求按照它们在 SQL CommandText 中出现的顺序创建参数。 【参考方案1】:

如果您担心删除 Dapper 代码中的 .OrderBy() 可能产生的副作用,那么一种解决方法是命名您的参数,使它们按照它们在 SQL 命令中出现的顺序进行排序.例如,我怀疑如果参数命名为@1DrugName@2DrugId,未经修改的Dapper 代码可能会正常工作。

【讨论】:

感谢您的想法。我实际上使用的是旧版本的 Dapper。在最新版本中,它已修复。无论如何感谢您的回复。 techknackblogs.com 我认为这个问题仍然存在,除非订单被保留***.com/questions/39339478/…

以上是关于带有 MS Access 更新和插入问题的 Dapper的主要内容,如果未能解决你的问题,请参考以下文章

MS-ACCESS - 在插入之前/之后插入/更新触发器需要

用 Python 在 MS Access 数据库中插入或更新行

如何在ms access数据库c#中插入带有主键的记录

在 MS Access 中插入、更新或删除的数据不直接可用

MS Access - 打开一个带有新记录的表单并从以前的表单中插入一个值

MS-Access SQL 将同一表中的值从“Value”更新为“*Value”