我正在开发一种具有某种版本控制功能的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(),但如何从数据库中获取正确的值?
由于
答案 0 :(得分:1)
我做了一些手工挖掘,终于找到了!原始值可以这样找到:
re.Country1 = re.Details.Properties.Country1.OriginalValue;
看看我的第一篇文章,了解“重新”是什么。