获取仅在本地删除(未保存)的实体?

时间:2015-05-04 20:51:32

标签: entity-framework

我正在做"预览"操作,以便您可以在执行之前预览对编辑的更改。实际上我正在做的是在不保存的情况下调用更新功能(不是动作)。

更新功能代码位:

// Updates existing schedules to new values; Working
UpdateSchedules(...); 

// Removes existing schedules no longer in date-range; Not working
RemoveSchedules(...); 
{
   ...
   foreach(schedule in schedulesToRemove) { db.Entry(schedule).State = EntityState.Deleted; }
   db.Schedules.RemoveRange(...);
   ...
}

// Adds schedules new to date-range; Working
AddSchedules(...); 
{
    ...
    db.Schedules.Add(...);
    ...
}

检索代码:

// The results have the modified and added entities, but they also have the removed entities.
viewModel.Results = db.PaymentRecurringSchedules.Where(s => s.PaymentSetupHeaderID == headerID).OrderBy(s => s.PaymentDate).ToList();

我对此代码的意图是不要调用db.SaveChanges(),因为它只是预览,但我仍然只想要删除(保存或未保存)的计划。

我尝试了什么

  • 我尝试更改已移除项目的状态,如上所示。
  • 我尝试了.Where(s => db.Entry(s).State != EntityState.Deleted)它根本就不喜欢(即执行错误)。

如何才能获得我删除但未保存的项目仍会从结果列表中过滤掉的结果?

版本: 6.0 (如果重要)

1 个答案:

答案 0 :(得分:1)

手头没有VS,但我认为这应该按照您的要求运作:

List<Object> deletedEntities = context.ChangeTracker.Entries()
 .Where(x => x.State == System.Data.EntityState.Deleted)
 .Select(x => x.Entity)
 .ToList();

请注意您也可能希望过滤特定的实体类型。