C# EF-另一个字段正在更新时自动更新(上次更新日期)
假设我有以下对象C# EF-另一个字段正在更新时自动更新(上次更新日期),c#,entity-framework,entity-framework-4,C#,Entity Framework,Entity Framework 4,假设我有以下对象 public class Car{ public int id; public string name; public string color; publid DateTime LastUpdateDate; } public class CarPart{ public int id; public string name; public string color; } 每当有人更新任何字段时,我都希望
public class Car{
public int id;
public string name;
public string color;
publid DateTime LastUpdateDate;
}
public class CarPart{
public int id;
public string name;
public string color;
}
每当有人更新任何字段时,我都希望更新LastUpdateDate字段。我最糟糕的设计是写下面这样的东西
public void setName(string name){
this.name=name;
this.LastUpdateDate = DateTime.now;
}
a。这些类是自动生成的,我必须维护一个部分属性。B太耦合了
谢谢。大多数人倾向于覆盖上下文的
SaveChanges()
审核方法
首先创建一个IAuditable
界面,并将其应用于所有要审核的实体:
public interface IAuditable
{
public DateTime? LastUpdateDate { get; set; }
}
然后在您的上下文中
:
public override int SaveChanges()
{
var entries = ChangeTracker.Entries()
.Where(e => e.State == EntityState.Modified);
foreach (var entry in entries)
{
var auditableEntity = entry.Entity as IAuditable;
if (auditableEntity != null)
auditableEntity.LastUpdateDate = DateTime.UtcNow;
}
return base.SaveChanges();
}
另外,看看
这里没有给出答案。。但是在你的c#上保留日期会给出服务器日期。。在Db端使用GetDate()来保持多个服务器的一致性不是更好吗?我认为这是一个非常好的注释。顺便说一句:这不应该是一个表触发器吗?是的,这将是最合适的我觉得。。。只是,除非我们需要服务器端的日期,否则我们总是希望在数据库端而不是服务器端有任何日期,但这些日期将是xml格式的,因此实际上并不表示任何列。谢谢,我知道这个线程已经有将近1年的历史了,但是我建议在存储这些东西时使用UTC日期…所以哪台服务器提供日期并不重要。另外,如果使用SQL Server的日期函数,则会有一个GetUtcDate()等效项。请更正我的错误。。但这不是明确地设定了日期吗。。价格有变化吗design@RameezAhmedSayad,是的,它确实明确地设置了日期。根据您上面的评论,依赖DB
GetDate()
确实更好,但这取决于每个项目的需求。