DBContext ChangeTracker : 감사를위한 추가 엔티티의 ID입니다
-
13-12-2019 - |
문제
나는 이와 같습니다 :
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가 데이터베이스를 때리지 않고도 생성 할 수 있습니다.
제휴하지 않습니다 StackOverflow