반응형
저장할 보류중인 변경 사항이 있는지 확인
Entity Framework의 엔터티 컨텍스트에 저장되지 않은 변경 사항이 있는지 확인할 수있는 방법이 있습니까?
다음과 같이 작동 할 수 있습니다 (변경 사항이 엔티티 추가, 제거 및 수정을 의미하는 경우).
bool changesMade = (context.ObjectStateManager.GetObjectStateEntries(EntityState.Added).Count() +
context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted).Count() +
context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified).Count()
) > 0;
편집하다:
개선 된 코드 :
bool changesMade = context.
ObjectStateManager.
GetObjectStateEntries(EntityState.Added |
EntityState.Deleted |
EntityState.Modified
).Any();
EF 6부터 context.ChangeTracker.HasChanges()
.
EF 4+를 사용하는 사용자를 위해 다음은 확장 메서드와 동일한 솔루션입니다.
public static class DbContextExtensions {
public static Boolean HasPendingChanges(this DbContext context) {
return context.ChangeTracker.Entries()
.Any(e => e.State == EntityState.Added
|| e.State == EntityState.Deleted
|| e.State == EntityState.Modified);
}
}
값을 비트 마스크로 결합 할 수 없습니다. 이 함수 GetObjectStateEntries()
는 논리를 처리했지만 LINQ는 적절한 결과를 생성하지 않습니다.
참고 URL : https://stackoverflow.com/questions/3131347/check-if-there-are-any-pending-changes-to-be-saved
반응형
'programing' 카테고리의 다른 글
Java Generics : 목록, 목록 (0) | 2020.10.31 |
---|---|
범용 iPhone / iPad 앱에 대해 두 아이콘을 어떻게 지정합니까? (0) | 2020.10.31 |
pinvokestackimbalance — 어떻게 고치거나 끌 수 있습니까? (0) | 2020.10.31 |
Django에서 사용자 로그 아웃을 강제하는 방법은 무엇입니까? (0) | 2020.10.31 |
형태소 분석기 대 Lemmatizer (0) | 2020.10.30 |