0

EffectiveAsOf 및 ExpiredAsOf에 대한 datetime 필드가 포함 된 여러 엔터티가 있습니다. 엔티티가 수정되면 SaveChanges 메서드를 재정의하고 기존 엔티티를 업데이트하는 대신 코드를 사용하여 원본 레코드를 ExpiredAsOf datetime이 현재 시간으로 설정하고 새 레코드가 새 데이터로 삽입 된 데이터베이스에 다시 저장합니다. ExpiredAsOf가 null로 설정된 현재 시간으로 설정된 EffectiveAsOf.SaveChanges 오버라이드의 objectStateEntryList에 새 레코드를 추가하는 방법

objectStateEntryList의 ObjectStateEntry 항목에 Entity 개체뿐만 아니라 CurrentValues ​​및 Original values ​​개체가 있다는 것을 알고 있습니다. EF가 DB에 CurrentValues ​​데이터 또는 Entity 데이터를 쓰려면 무엇을 사용합니까? 새 항목을 만드는 방법은 무엇입니까? 아니면 완전히 잘못된 방향으로 가고 있습니까?

나는 이것을 EF 외부의 엔티티에서 처리 할 수 ​​있지만, EF가 이러한 엔티티를 자동으로 감지하고 처리하도록합니다. 여러분의 도움과 통찰력, 짐에 미리

감사

기본적으로

답변

0

EF 모두 사용합니다 - 당신은에서 데이터를로드하기 때문에 레코드가 변경된 경우는 동시성 문제 (예를 확인하기 위해 원래의 값을 사용 DB)는 엔티티의 현재/수정 된 값을 사용하여 DB 레코드를 업데이트합니다.

EF에 "이러한 엔티티를 자동으로 감지하고 처리"할 수 없습니다. 엔티티 객체의 새 인스턴스를 만들고, 기존 엔티티 객체의 값을 복사하고, 두 객체에서 유효 날짜와 만료 날짜를 적절하게 설정하고, DbContext에 새 엔티티 객체를 추가 한 다음 변경 사항을 저장해야합니다. 이 작업을 수행하는 가장 좋은 방법은 DbContext의 SaveChanges() 메서드를 재정의하는 것입니다. 가능한 깨끗하고 관리하기 쉽도록 저장소 패턴을 사용하는 것이 좋습니다.