Lightswitch - 获取修改字段的旧值(数据库值)

时间:2013-04-12 08:19:47

标签: version-control visual-studio-lightswitch rollback revision-history

我正在开发一种具有某种版本控制功能的Lightswitch应用程序。当用户更改项目并单击保存时,我不想更新数据库中的那一行,而是想要一个包含已修改数据的新行,原始行将恢复为原始状态。 我已设法使用此代码创建已修改的新行:

        var changeSet = this.DataWorkspace.dataEntity.Details.GetChanges();
        var modified = changeSet.ModifiedEntities.OfType<RuleEntry>();

        foreach (RuleEntry re in modified)
        {

            //Create a new rule entry
            RuleEntry newRuleEntryRevision = this.DataWorkspace.dataEntity.RuleEntries.AddNew();
            newRuleEntryRevision.Country1 = re.Country1;
            newRuleEntryRevision.Family1 = re.Family1;
            newRuleEntryRevision.IP1 = re.IP1;
            newRuleEntryRevision.RuleKey = re.RuleKey;
            newRuleEntryRevision.RuleStatus = re.RuleStatus;
            newRuleEntryRevision.Title = re.Title;
            newRuleEntryRevision.Edited = DateTime.Now;
            newRuleEntryRevision.IsReal = false;

但是在我完成之后,我希望“re”实体恢复到之前的状态,换句话说,它应该具有数据库中的值。

我知道可以像这样设置字段:

re.Country1 = Countries.Sweden;

然后只运行SaveChanges(),但如何从数据库中获取正确的值?

由于

1 个答案:

答案 0 :(得分:1)

我做了一些手工挖掘,终于找到了!原始值可以这样找到:

re.Country1 = re.Details.Properties.Country1.OriginalValue;

看看我的第一篇文章,了解“重新”是什么。