어떻게 든 genericise하고 메서드로 호출하려는 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
뺐다 가능한 외부 업데이트 된 객체 그래프의 동일한 유형이있다. 목표는 두 개의 객체 그래프를 동기화하여 변경 사항이 지속되도록하는 것입니다.
등 MyUnderPants
이 가능한 모든 있습니까?
'MyItems'이'T'의 집합이라고 가정하면, 다른 모든'T'의 속성은'Id'와'ValidTo'입니까? 그게 더 일반화하고 다른 컬렉션과 함께 일하는 것을 고집하는 것 같습니다. – Jamiec
codereview에 게시해야한다고 생각합니다. http://codereview.stackexchange.com/ – maxbeaudoin
예, 모두 ID와 ValidTo가 있지만 컨텍스트가 있습니다. Entry(). CurrentValues.SetValues ()도 여전히 작동해야하므로이 두 속성을 기반으로하는 인터페이스는 작동하지 않습니다. 나는 그것을하는 법을 알지 못하지만, 타입을 전달할 필요가 있다는 것을 확신합니다. – Moo