gpt4 book ai didi

c# - 我如何检查属性在更新之前是否实际更改

转载 作者:行者123 更新时间:2023-11-30 20:33:34 25 4
gpt4 key购买 nike

我使用的是 EF 5(不是 6)。我有一个下面类的对象,它在使用 EF 的数据库中。

public class Student
{
public string Name { get; set; }
public int Age { get; set; }
public DateTime DOB { get; set;}
}

后来,

我收到更新同一对象/记录的请求。

但在进行更新调用之前,我想交叉比较属性是否实际更改,因为我可能会获得相同的更新记录,所以不想进行盲目更新。

 var student = _context.Students.select(x =>x.Name == "").first();
student.name = "";
student.age = "";
student.DOB = "";
_context.Entry(student).State = EntityState.Modified;
_context.saveChanges();

EF 是否为此提供了一些内置方法?

或者,我需要一个一个地交叉比较每个属性再决定?我可以拥有 20 个属性...

有什么想法吗?

最佳答案

从 EF 6 开始

context.ChangeTracker.HasChanges()

请引用文档

Checks if the DbContext is tracking any new, deleted, or changed entities or relationships that will be sent to the database if SaveChanges is called.

DBChangeTracker Class

或者您可以从这个博客中读到这个方法如何Secrets of DetectChanges

更新:对于 EF 5,有一个替代方案

return this.ChangeTracker.Entries().Any(e => e.State == EntityState.Added
|| e.State == EntityState.Modified
|| e.State == EntityState.Deleted);

这个答案不是我的,我从这个answer所以把功劳归功于合适的人。

关于c# - 我如何检查属性在更新之前是否实际更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40103134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com