根据 hashchanges 和 getchanges 记录检测到的域上下文更改

Log changes detected to domaincontext based on haschanges and getchanges

我有一个使用 Entity Framework 4 的 Silverlight 应用程序。在该应用程序中,用户可以将 add/remove Active Directory 组名称的字符串表示形式添加到配置中 - 更改不会保存在后台,直到 'save' 按钮被点击。

单击 'save' 时,Entity Framework 会使用对 DomainContext 的更改更新后端。这按预期工作。但我想记录所做的更改,并在每次 context.SubmitChanges() 触发之前通过电子邮件将它们发送出去。记录更改的最简单方法是什么?我已经有了可以重复使用的代码,以通过电子邮件发送要记录的更改。

我正在查看 context.ADGroupRules.EntityContainer.GetChanges() 并且可以在其中看到 AddedEntities 和 RemovedEntities 属性,但我不确定如何 'get at' 包含的片段中突出显示的字符串以便记录它.

        if (command == "Save")
            {
                if (_context.HasChanges)
                {
                    var changeSet = _context.ADGroupRules.EntityContainer.GetChanges();

                 //log and email changes here

                    _context.SubmitChanges(OnSubmitCompleted, null);
                }
            }

我想通了

            if (command == "Save")
            {
               if (_context.HasChanges)
               {
                   var changeSet = _context.ADGroupRules.EntityContainer.GetChanges();
                   foreach (var entity in changeSet.AddedEntities.OfType<ADGroupRule>())
                   {
                       ADGroupRule rule = (ADGroupRule)entity;
                       Console.WriteLine(rule.ADGroupName);//simulate logging-emailing
                   }