C# 实体框架在更新前检查当前值
我们有一个CRUD操作库。基本上,如果我们想执行任何读/写操作,我们可以执行以下操作C# 实体框架在更新前检查当前值,c#,entity-framework,C#,Entity Framework,我们有一个CRUD操作库。基本上,如果我们想执行任何读/写操作,我们可以执行以下操作 using (MemberRepo mRepo = new MemberRepo()) { mRepo.UpdateEntity(member); mRepo.Save(); } 然而,我需要知道的是,在我们更新数据库之前,是否有可能知道数据库中的某个列值?例如,如果成员表中有一个名为Status的字段,我想知道该成员的当前状态,然后再使用其他值更新
using (MemberRepo mRepo = new MemberRepo())
{
mRepo.UpdateEntity(member);
mRepo.Save();
}
然而,我需要知道的是,在我们更新数据库之前,是否有可能知道数据库中的某个列值?例如,如果成员表中有一个名为Status的字段,我想知道该成员的当前状态,然后再使用其他值更新它
谢谢。以下代码将允许您设置具有此列/属性的任何实体的创建日期。在某些情况下,它可以充当触发器
public override int SaveChanges()
{
foreach (var entry in ChangeTracker.Entries().Where(entry => entry.Entity.GetType().GetProperty("CreationDate") != null))
{
if (entry.State == EntityState.Added)
{
entry.Property("CreationDate").CurrentValue = DateTime.Now;
}
}
return base.SaveChanges();
}
检索现有值检查它,然后更新。是的,我们可以这样做,但我认为在SQL Server中,当我们在更新上编写触发器时,我们有一个名为deleted的对象(表)句柄,该对象(表)具有更新发生前的值。我在想,我们在EF中有类似的东西,我们不需要重新阅读整个obj,但据我所知,EF中不支持触发器。不是触发器支持,而是我在这里尝试做的事情。ORM工具不支持,如果需要,您可以为此创建自定义存储库模式。