【问题标题】:Autogenerated timestamp in Entity Manager实体管理器中自动生成的时间戳
【发布时间】:2011-05-22 09:30:43
【问题描述】:

我有一个绑定到某些实体的 WPF DataGrid(实体框架 4+)。

然后用户编辑 DataGrid 并按 SAVE。然后使用SaveChanges() 将数据保存回MS SQL Server 2008。嗯...现在,我想要 AUTOMATIC 时间戳,它存储最后一次更改的时间并自动更新。

各位,有可能吗?怎么样?

谢谢你,詹姆斯

【问题讨论】:

    标签: c# .net wpf entity-framework


    【解决方案1】:

    最简单的解决方案是在数据库级别:

    • 在表中创建一个新列来存储您的DateTime 值。
    • 创建数据库触发器以设置每次插入或更新表的列。
    • 将新列映射为实体中的属性
    • 将新属性的StoreGeneratedPattern 设置为Computed,以便在每次插入或更新后,数据库中生成的值会正确更新为您附加的实体。

    如果您不喜欢触发器,则必须在覆盖的 SaveChanges 中手动执行此操作,您可以在其中找到将插入或更新的所有实体并设置列:

    public override int SaveChanges(SaveOptions options)
    {
        var entities = ObjectStateManger.GetObjectStateEntries(EntityState.Added | EntityState.Modified)
                                        .Select(e => e.Entity)
                                        .OfType<YourEntityType>();
    
        DateTime now = DateTime.Now;
        foreach(var entity in entities)
        {
            entity.Updated = now;
        }
    
        return base.SaveChanges(options);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 2021-12-18
      • 1970-01-01
      • 2011-03-12
      • 1970-01-01
      • 2011-03-04
      • 2013-01-26
      相关资源
      最近更新 更多