1

我正在开发一个具有某种版本控制的 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(),但我如何从数据库中获取正确的值?

谢谢

4

1 回答 1

1

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

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

看看我的第一篇文章,看看“re”是什么。

于 2013-04-12T09:35:38.200 回答