정말로 POCO라면 아니요, 사본을 보관해야합니다. IsDirty 플래그를 POCO에 추가하려는 경우 속성이 변경 될 때 설정할 수 있습니다. 이러한 객체는 속성이 변경 한 후 원래 값으로 다시 변경이있는 경우는 DirtyFlag가 여전히 설정 될 것이라고
class POCO
{
[Flags]
enum POCOFieldsEnum
{
Property1 = 0x01;
Property2 = 0x02;
}
private String _Property1;
public String Property1
{
get { return _Property1; }
set
{
if (value.Equals(_Property1)) return;
_Property1 = value;
DirtyFlags |= POCOFieldsEnum.Property1;
}
}
private String _Property2;
public String Property2
{
get { return _Property2; }
set
{
if (value.Equals(_Property2)) return;
_Property2 = value;
DirtyFlags |= POCOFieldsEnum.Property2;
}
}
POCOFieldsEnum DirtyFlags { private set; public get; }
}
참고 :이 속성이 변경 된 알 수 있도록 당신은 비트 필드 IsDirty 사용 플래그를 만들 수 있습니다. 이 상황을 방지하려면 속성 설정자에서 비교할 속성의 원래 값 (또는 해시 값)을 저장해야합니다.
개체 (ADO, EF, NHibernate)를 업데이트하는 데 사용 하시겠습니까? –
각 변경 사항에 대해 POCO의 전체 세부 정보 만 기록 할 수 있습니까? – Oded
@Oded - 가능하지만 많은 양의 데이터를 로깅 할 것이고 복제본은 피할 수있는 저장 공간을 상당히 증가시킬 것입니다. – Mattl