我的 EntityFramework 支持的存储库中有一个重复出现的代码块,我想以某种方式对其进行泛化并作为方法调用,因此重用代码而不是重复它。
当前代码块如下所示:
// Archive deleted MyItems sections
_t.MyItems.Where(x => x.ValidTo == null && !team.MyItems.Contains(x)).ToList().ForEach(x => x.ValidTo = DateTime.Now);
// Add or update MyItems sections
foreach (var MyItemsSection in team.MyItems)
{
if (MyItemsSection.Id == default(int))
{
MyItemsSection.ValidFrom = DateTime.Now;
_t.MyItems.Add(MyItemsSection);
}
else
{
var _MyItemsSection = _t.MyItems.FirstOrDefault(x => x.Id == MyItemsSection.Id);
context.Entry(_MyItemsSection).CurrentValues.SetValues(MyItemsSection);
}
}
_t
是 EntityFramework 连接对象图,而team
是已断开连接并可能在外部更新的相同类型的对象图。这里的目标是同步两个对象图,以便保持更改。
我需要传入 _t.MyItems 和 team.MyItems,其中 MyItems 将被泛化,因此相同的方法适用于 MyOtherItems 和 MySocks、MyUnderPants 等。
这是可能吗?