反馈BUG 返回
问题描述 C# 操作MYSQL
首先执行
foreach (var dr in list)
{
sql += string.Format(" INSERT INTO db_core.tb_pricelist_info (WERKS, MATNR, RTYPE, Onhand, Weight, OpenSO, OpenPO, ResQty, sapATR, sapCOST, CacheDateTime) values " +
"('{0}','{1}','{2}',{3},{4},{5},{6},{7},{8},{9},'{10}') " +
"on duplicate key update Onhand ={3} , Weight={4}, OpenSO={5}, OpenPO={6}, ResQty={7}, sapATR={8}, sapCOST={9}, CacheDateTime='{10}'; ",
dr.P_WERKS, dr.P_MATNR, dr.P_STATUS, dr.RTN_ONHAND, dr.RTN_WEIGHT, dr.RTN_OPENSO, dr.RTN_OPENPO, dr.RTN_RVATIN, dr.RTN_MATATR, dr.RTN_ZPRS, tNow.ToString("yyyy-MM-dd HH:mm:ss"));
}
if (sql != "")
{
dbClient.ExecuteCommand(sql);
}
其次执行
var vwsjfood = dbClient.Queryable<vw_sjfood>().Where(p => p.WERKS == WERKS && p.MATNR == MATNR).ToList();
最后得到的vwsjfood 是旧数据.没有使用事务
使用调试再次执行
vwsjfood = dbClient.Queryable<vw_sjfood>().Where(p => p.WERKS == WERKS && p.MATNR == MATNR).ToList();
得到更新后的数据
热忱回答(3)
-
Aaron 傲 VIP0
2017/7/5作者大人不要不理我啊
0 回复 -
Aaron 傲 VIP0
2017/7/5這裡問題找到了,是MYSQL on duplicate key update 語句的問題, 它的更新效率非常低下,, 我這裏出現的問題,實際上只是執行了兩條語句,但是更新動作卻要差不多8s , 也有可能是服務器在不斷的跑這個更新的原因.此貼完結
0 回复 -
抱走 VIP0
2017/7/5这个类库基础的功能, 解释 lambda表达式,生成sql字符串和参数对象, 通过ado.net执行,最后序列化(mapping),类库有个记录日志的功能,可以记录生成的sql字符串和参数对象, 可以查看这个日志,看看执行的sql是否和我们想要的一致,如果是, 剩下的就是调试这sql执行的效率和排查sql的问题了
0 回复