2016-12-16 1 views
1

저는 Model First 접근법을 사용하고 있으며 [NotMapped] 속성을 가진 플래그가 거의없는 하나의 추상 클래스 MyEntity를가집니다. 모든 엔티티는 MyEntity에서 상속합니다. ObjectMaterialized 이벤트 핸들러 내에서 엔티티가 구체화되고 내 어플리케이션과 관련이 있음을 나타내는 플래그를 설정합니다.엔티티 프레임 워크 6 ObjectMaterialized 이벤트 및 SaveChanges 오버라이드

내 SaveChanges() 재정의 내에서 base.SaveChanges()를 호출하고 해당 플래그를 다시 설정합니다. 실제 데이터가 변경되지는 않았지만 데이터베이스로 엔티티 업데이트가 발생하는 것 같습니다.

내 질문은 :

  1. 그 플래그는 왜 그들에게 데이터베이스에 개체 업데이트를 야기 변경, 데이터베이스 컬럼에 매핑되지?

  2. 모든 엔티티가 상속 한 추상 클래스 대신 부분 클래스에 플래그를 배치하려고했습니다. 이러한 플래그 변경으로 인해 데이터베이스에 대한 엔티티 업데이트가 여전히 발생합니다. 왜 그런가요?

  3. 또한 base.SaveChanges() 전에 값을 재설정 한 후에도 플래그 속성을 변경하지 않았습니다. 이 작업으로 데이터베이스가 업데이트되지는 않지만 응용 프로그램이 올바르게 작동하지 않습니다. 이 접근법은 기본적으로 데이터베이스 업데이트를 피하기 위해 엔티티/속성 상태와 관련이 있습니다. 그러나 그것이 초래할 수있는 부작용은 무엇입니까?

답변

0

마지막으로 엔터티 상태를 EntityState.Unchanged로 변경하여이 문제를 해결했습니다. 그것은 내 애플 리케이션을 위해 작동합니다. 그러나 상태를 변경하는 방법에 대해서는 여전히 한 가지 문제가 있습니다.

상태를 변경하려면 다음 방법은 문제 발생 :

ObjectStateEntry state = ((IObjectContextAdapter)dbContext).ObjectContext.ObjectStateManager.GetObjectStateEntry(entity.Entity); 
state.ChangeState(EntityState.Unchanged); 
:

dbContext.Entry(entity.Entity).State = EntityState.Unchanged; 

을 나는 다음과 같은 코드를 사용하여 상태를 변경해야

관련 문제