当前位置: 首页 > 编程语言 > C#

Dapper和MSAccess-读取工作,写入不共享

时间:2023-04-10 14:18:04 C#

Dapper和MSAccess-读取工作,写入不遇到困难,我无法更改它。这很好用:使用(OleDbConnectionconn=ConnectionHelper.GetConnection()){conn.Open();varresults=conn.Query("selectFirstNamefromStudentswhereLastName=@lastName",new{lastName="Smith"});conn.Close();这很好用:使用(OleDbConnectionconn=ConnectionHelper.GetConnection()){OleDbCommandcmd=newOleDbCommand("updateStudentssetFirstName=@firstName,City=@citywhereLastName=@lastName",conn);cmd.Parameters.AddWithValue("firstName","John");cmd.Parameters.AddWithValue("city","SomeCity");cmd.Parameters.AddWithValue("lastName","Smith");conn.Open();varresult=cmd.ExecuteNonQuery();conn.Close();这不是...它执行时没有错误,但它在数据库中将FirstName设置为“SomeCity”,将City设置为“John”:varresults=conn.Query("updateStudentssetFirstName=@firstName,City=@citywhereLastName=@lastName",new{firstName="John",city="SomeCity",lastName=“史密斯”});conn.Close();}有任何想法吗?如果我使用DynamicParameters,在Dapper下编辑可以工作:parameters.Add("firstName","John");parameters.Add("城市","SomeCity");parameters.Add("lastName","Smith");conn.Open();varresult=conn.Query("updateStudentssetFirstName=@firstName,City=@citywhereLastName=@lastName",parameters);conn.Close();}经过一些挖掘,我发现了一个原因:这是来自dapper的SqlMapper的CreateParamInfoGenerator委托:;props是你的一致参数,通过OrderBy(p=>p.Name)重新排序,可以把城市往前移new{firstName="John",city="SomeCity",lastName="Smith"}然后把props加IDbCommand参数,其中顺序很重要。如果我注释掉OrderBy()子句,一切正常。我还测试了DynamicParameters并故意重新排序属性以更早地移动城市:varparameters=newDynamicParameters();parameters.Add("城市","SomeCity");parameters.Add("firstName","John");参数.Add("lastName","Smith");varresult=dbConnection.Query("updateStudentssetFirstName=@firstName,City=@citywhereLastName=@lastName",parameters);的顺序就是原因!我认为您现在可以修改SqlMapper的本地副本并删除OrderBy()并等待Marc的官方判决...希望这会有所帮助。我有一个类似的问题,我所做的是使用@param1、@param2之类的参数名称而不是@name、@id、@price,因此顺序保持不变,而无需修改SQLMapper.cs文件。就像上面是C#学习教程:DapperandMSAccess-读能行,写不行分享的所有内容,如果对大家有用,需要详细了解C#学习教程,希望大家多多付出注意—publicvoidUpdate(Moviemovie){varsql="UPDATEmyDB.movi??essettitle=@param1,genre=@param2whereID=@param3";db.Execute(sql,new{param1=movie.Title,param2=movie.Genre,param3=movie.ID});}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: