代码之家  ›  专栏  ›  技术社区  ›  Dave Mackey chem1st

实体框架:当另一个实体被更新时更新实体

  •  1
  • Dave Mackey chem1st  · 技术社区  · 16 年前

    我有一个EDM,它包括实体扩展和历史。我的目标是使用历史记录来跟踪对扩展实体所做的所有更改。例如,如果ID为223的扩展名的属性“Name\u Display”已更改-我希望历史实体记录此内容。

    我正在用ASP.NET和VB.NET。在我的代码中,我把钩子放在哪里说“更新历史实体”,那个钩子应该是什么样子?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Community Mohan Dere    6 年前

    SavingChanges活动怎么样:

    public override int SaveChanges(SaveOptions options)
    {
    
        foreach (ObjectStateEntry entry in ObjectStateManager.GetObjectStateEntries(
            EntityState.Added | EntityState.Modified))
        {
            //DO STUFF like create history
        }
        return base.SaveChanges(options);
    }
    

    以下页面可能会有所帮助: http://msdn.microsoft.com/en-us/library/cc716714.aspx

    编辑:

    http://msdn.microsoft.com/en-us/library/bb896269.aspx

    免责声明…我没有尝试比较原始和旧价值观的经验

    更改跟踪

    对象图的更改跟踪信息存储在ObjectStateEntry对象中,这些对象由ObjectContext为每个附加对象创建。ObjectStateEntry对象存储实体的以下信息:

    -对象的实体状态

    -实体集名称

    -实体修改属性的名称。