문제

나는 이와 같습니다 :

public override int SaveChanges()
{
    foreach (var changeLog in this.ChangeTracker.Entries()
        .Where(p => p.State == EntityState.Added ||
               p.State == EntityState.Deleted ||
               p.State == EntityState.Modified)
        .SelectMany(entity => AuditRecords(entity)))
    {
        this.ChangeLogs.Add(changeLog);
    }

    return base.SaveChanges();
}
.

그러나 물론 감사 된 변경 로그에는 EntityState가 추가 될 때 엔티티의 기본 키 값이 없을 것입니다 (SaveCheChanges 때까지).변경 감사 목적으로 기본 키 값을 얻을 수 있습니까?

리처드

도움이 되었습니까?

해결책

List<T> 의 엔티티에 대한 참조를 저장합니다.(또는 배열 또는 다른 구조) 및 다음 SaveChanges의 기본 구현을 호출합니다.

통화가 완료되면 엔티티가 참조 유형이기 때문에 (모범 사례가 변경할 수 있음을 나타내는 경우) 목록의 해당 항목의 기본 키가 채워져 있어야합니다.엔티티를 감사 계층으로 변경하십시오.

또한 하나의 엔티티 유형이 다른 엔티티 유형 컬렉션 (ChangeLogs에서 노출 된 것)에 추가하는 엔티티를 추가하려고하는 것으로 나타났습니다.나는 이것에 대해 추천 할거야.다른 엔티티 세트에 항목을 입력하는 경우 이 아닌 엔티티를 재사용하지만 인스턴스를 적절한 엔티티 유형으로 복사하십시오.

다른 팁

기본 키에 대한 GUID를 사용하므로 ID가 데이터베이스를 때리지 않고도 생성 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top