在使用C#MVC中的EF执行SQL UPDATE语句,偶尔出现有些数据未被更新,但是日志记录的更新语句和返回值都是正常的。
比如八条数据请求过来,日志记录执行的SQL为八条,且success记录的返回也是成功了八条,但是偶尔出现只有七条被更新,一条未被更新的情况。
更新代码如下
using (var db = dbcontext.GetContext())
{
string sql = "";
int success = 0;
string BatchNo;
string orderid;
foreach (var item in list) //遍历数据写入数据库
{
BatchNo= Convert.ToString(item.BatchNo);
orderid = Convert.ToString(item.orderid);
sql = "select count(*) from mytable where orderid = '{0}'";
sql = string.Format(sql, item.orderid);
int y = db.Database.SqlQuery<int>(sql).FirstOrDefault();
if (y == 0)
{
sql = "update mytable set Orderid = '{0}',Isach='{1}' where BatchNo= '{2}'";
sql = string.Format(sql, orderid, 1, BatchNo);
success += db.Database.ExecuteSqlCommand(sql);
db.SaveChanges();
orderid = "";
logger.Info(sql);//记录执行的sql到日志
}
FGMPBatchNo = "";
}
logger.Info("请求数据为:" + data + "请求结果为:成功" + success + "条,失败:" + (list.Count - success) + "条");
if (success == list.Count)
{
return GetSuccessMessage("记录数据成功");
}
else
{
return GetErrorMessage("成功记录:" + success + "条,失败:" + (list.Count - success) + "条");
}
}