C# 带有MS Access更新和插入问题的简洁

C# 带有MS Access更新和插入问题的简洁,c#,ms-access,dapper,C#,Ms Access,Dapper,我正在使用Dapper更新和插入Access数据库。代码正在工作,但未引发异常,但未更新数据库中的值。下面是我的代码 sql.Append("UPDATE drugs_repository SET drug_name = @DrugName "); sql.Append(" WHERE id = @DrugId"); var parameters = new { DrugName = objDrug.DrugName, D

我正在使用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);
sql.Append(“更新药物存储库设置药物名称=@DrugName”);
Append(“其中id=@DrugId”);
var参数=新
{
DrugName=objDrug.DrugName,
DrugId=objDrug.DrugId
};
var t=connection.Query(sql.ToString(),参数);
有人能让我知道我在上面的代码中到底遗漏了什么吗?
当我硬编码该值时,它会在数据库中更新。因此,它可能与参数有关。

如果您担心删除Dapper代码中的
.OrderBy()
可能会产生副作用,那么一种解决方法是命名参数,使其按照SQL命令中显示的顺序排序。例如,如果参数名为
@1DrugName
@2DrugId
,我怀疑未修改的Dapper代码可能可以正常工作。在Dapper的SqlMapper.cs文件中,我从“//IEnumerable props=type.GetProperties().Where(p=>p.GetIndexParameters().Length==0.orderby(p=>p.Name);”中删除了orderby。现在工作正常了。不确定删除orderby是否会有任何影响。建议将不胜感激。+1干得好!因为
'@DrugName'>'@DrugId'
.OrderBy
正在交换参数的顺序,并且Access.OLEDB要求按照参数在SQL CommandText中的显示顺序创建参数。谢谢您的想法。我实际上是在使用旧版本的Dapper。在最新版本中,它是固定的。无论如何,谢谢你的回复。techknackblogs.com我认为这个问题仍然存在,除非订单得到遵守