首页 > 其他 > 详细

EF中数据修改时动态更新其他数据

时间:2021-05-16 00:26:01      阅读:20      评论:0      收藏:0      [点我收藏+]

场景

  利用.net core开发时,经常会遇到使用EF(Entity Framework),但是今天在开发过程中发现一个值莫名其妙的自己变了,我怀疑是EF的问题。

  主要代码如下:

 1 // 最近一条告警数据
 2 ErrorRecord lastError = new ErrorRecord();
 3 // 查询最近一条
 4 ErrorRecord error = _unitWork.Find<ErrorRecord>(u => u.State == 0 && u.DeviceId == device.Id && u.RuleId == rule.Id).OrderByDescending(u => u.LastErrorTime).ToList().First();
 6 // 进行赋值
 7 lastError = error;
 8 
 9 error.LastErrorTime = DateTime.Now;
10 _unitWork.Update(error);
11 
12 // 判断时间间隔
13 if((DateTime.Now - lastError.LastErrorTime).Minutes > 5)
14 {
15      // do something
16 }

  其中的Update()函数代码如下:

var entry = this._context.Entry(entity);
entry.State = EntityState.Modified;

//如果数据没有发生变化
if (!this._context.ChangeTracker.HasChanges())
{
         entry.State = EntityState.Unchanged;
}

  问题就出现在lastError。当我更新数据库中error的LastErrorTime时,这里的Update函数只用了修改,并没有更新。但此时用来记录一开始时间的lastError的时间也改变了。

解决

  解放方法倒是很简单,就是把那一个LastErrorTime字段的值取出来,进行时间间隔的判断就可以了。

  但不知道为什么会出现这种情况,希望有人能讨论交流一下。

EF中数据修改时动态更新其他数据

原文:https://www.cnblogs.com/chenzibai/p/14772422.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!