【问题标题】:Entity framework code first - What is the best approch to set property when entity is saved实体框架代码优先 - 保存实体时设置属性的最佳方法是什么
【发布时间】:2012-01-31 11:18:32
【问题描述】:

我正在使用 Entity Framework 4.1 并首先使用代码。

这是我的课

public class Dummy {
    public string Name { get; set; }
    public DateTime lastModifiyed { get; set; }
}

我想要做的是每次保存 Dummy 对象时,都应将 lastModifyed 属性设置为当前时间。

即使我使用像 requried 这样的属性,此代码仍然有效。

var d = new Dummy();
d.lastModifiyed = DateTime.MinValue

做这种事情的最佳实践是什么。我已经阅读了覆盖从 DbContext 继承的类中的 SaveChanges 并检查例如接口是一个很好的方法。或者我该怎么做?

【问题讨论】:

    标签: c# .net entity-framework-4.1 ef-code-first code-first


    【解决方案1】:

    覆盖SaveChanges 方法并在调用base.SaveChanges 之前枚举来自更改跟踪器的更改。即:

    foreach (var item in (this as IObjectContextAdapter).ObjectContext.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted)
        .Where(entry => entry.Entity is ITracksLastModified)
        .Select(entry => entry.Entity as ITracksLastModified))
    {
        item.LastModified = DateTime.UtcNow;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多