비즈니스 논리 정의(Entity Framework)

속성 또는 관계 변경과 같은 특정 작업 중에 발생하는 이벤트를 처리하여 Entity Framework 응용 프로그램에 비즈니스 논리를 추가할 수 있습니다. 이 비즈니스 논리에는 속성을 변경하거나 SaveChanges 메서드를 호출할 때 추가 유효성 검사나 로깅을 만드는 것이 포함될 수 있습니다. Entity Framework 에서 발생한 이벤트를 처리하거나 속성 변경 시 호출된 사용자 지정 부분 메서드(Partial Method)를 정의하는 방법으로 사용자 지정 비즈니스 논리를 호출할 수 있습니다. 이 항목에서는 몇 가지 이벤트를 설명하고 다른 관련 항목에 대한 링크를 제공합니다.

이벤트 및 부분 메서드(Partial Method) 설명

System.Data.Objects.ObjectContext.ObjectMaterialized

쿼리 작업이나 로드 작업의 일부로 데이터 소스의 데이터에서 새 엔터티가 만들어지는 경우 발생합니다. 이 이벤트는 개체에 대한 스칼라 속성, 복합 속성 및 참조 속성이 모두 설정된 후, 컬렉션이 로드되기 전에 발생합니다. 개체 컨텍스트에 동일한 키 값을 가진 개체가 있으면 Entity Framework 에서는 개체를 다시 만들지 않으며 이 이벤트도 발생하지 않습니다.

System.Data.Objects.ObjectContext.SavingChanges

ObjectContext에서 SaveChanges 작업을 시작할 때 발생합니다. 이 이벤트는 일반적으로 새 값을 데이터베이스에 쓰기 전에 변경된 개체의 유효성을 검사하는 데 사용됩니다.

자세한 내용은 방법: 변경된 내용을 저장할 때 비즈니스 논리 실행(Entity Framework)을 참조하십시오.

System.Data.Objects.ObjectStateManager.ObjectStateManagerChanged

엔터티가 삭제 또는 분리 메서드를 통해 컨텍스트에서 나갈 때 또는 쿼리나 추가 및 연결 메서드를 통해 컨텍스트에 들어갈 때 발생합니다. 자세한 내용은 방법: 개체 상태가 변경될 때 비즈니스 논리 실행(Entity Framework)을 참조하십시오.

Dd456876.note(ko-kr,VS.100).gif참고:
변경 내용 추적 프록시가 없는 POCO 엔터티를 사용하는 경우 DetectChanges 메서드를 호출하거나 DetectChanges를 호출하는 SaveChanges 메서드를 호출하면 변경 내용이 검색됩니다.

System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged

연결이 변경될 때 발생합니다. 코드에서 생성된 기본 엔터티나 프록시 개체가 없는 POCO 엔터티를 사용하는 경우에는 실제 탐색 속성을 변경함과 동시에 이 이벤트가 발생합니다.

Dd456876.note(ko-kr,VS.100).gif참고:
프록시가 없는 POCO 엔터티를 사용하는 경우 DetectChanges 메서드를 호출하거나 DetectChanges를 호출하는 SaveChanges 메서드를 호출하면 변경 내용이 검색됩니다.

Load, AttachClear 같은 대량 작업을 수행하는 동안에는 이벤트가 나타나지 않을 수 있습니다.

자세한 내용은 방법: 연결 변경 중 비즈니스 논리 실행을 참조하십시오.

System.Data.Objects.DataClasses.StructuralObject.PropertyChanging

스칼라 속성 값 변경이 보류 중일 때 발생합니다. Entity Framework 에서 생성된 클래스는 스칼라 속성 setter에서 ReportPropertyChanging을 호출합니다. ReportPropertyChanging 메서드는 PropertyChanging 이벤트를 발생시킵니다. 이 이벤트를 처리하여 속성 값이 변경되기 전에 유효성 검사 등의 비즈니스 논리를 실행합니다. 자세한 내용은 방법: 스칼라 속성 변경 중 비즈니스 논리 실행(Entity Framework)을 참조하십시오.

IEntityWithChangeTracker를 구현하는 사용자 지정 데이터 클래스의 변경 내용을 추적할 때는 IEntityChangeTracker를 사용하여 속성 변경 내용을 보고해야 합니다.

Dd456876.note(ko-kr,VS.100).gif참고:
탐색 속성이 변경될 때 알림을 받으려면 System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged 이벤트를 등록합니다.자세한 내용은 방법: 연결 변경 중 비즈니스 논리 실행을 참조하십시오.

System.Data.Objects.DataClasses.StructuralObject.PropertyChanged

스칼라 속성 값이 변경되면 발생합니다. Entity Framework 에서 생성된 클래스는 스칼라 속성 setter에서 ReportPropertyChanged를 호출합니다. ReportPropertyChanged 메서드는 PropertyChanged 이벤트를 발생시킵니다. 이 이벤트를 처리하여 속성이 변경될 때 로그를 작성하는 등의 비즈니스 논리를 실행합니다. 자세한 내용은 방법: 스칼라 속성 변경 중 비즈니스 논리 실행(Entity Framework)을 참조하십시오.

IEntityWithChangeTracker를 구현하는 사용자 지정 데이터 클래스의 변경 내용을 추적할 때는 IEntityChangeTracker를 사용하여 속성 변경 내용을 보고해야 합니다.

Dd456876.note(ko-kr,VS.100).gif참고:
탐색 속성이 변경될 때 알림을 받으려면 System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged 이벤트를 등록합니다.자세한 내용은 방법: 연결 변경 중 비즈니스 논리 실행을 참조하십시오.

OnContextCreated 메서드

엔터티 데이터 모델 도구는 모델의 EntityContainer를 나타내며 ObjectContext 클래스에서 상속되는 클래스에 OnContextCreated 부분 메서드(Partial Method)를 생성합니다. 이 부분 메서드(Partial Method)는 ObjectContext가 인스턴스화될 때마다 호출됩니다. 이 부분 메서드(Partial Method)를 코드에 구현하여 SavingChanges 이벤트에 대한 처리기를 등록합니다. 자세한 내용은 방법: 변경된 내용을 저장할 때 비즈니스 논리 실행(Entity Framework)을 참조하십시오.

On PropertyName ChangingOnPropertyNameChanged

엔터티 데이터 모델 도구는 각 엔터티 형식에 대한 스칼라 속성 set 접근자에서 부분 메서드(Partial Method)를 생성합니다. OnPropertyNameChanging 부분 메서드(Partial Method)는 값이 설정되기 전에 호출됩니다. OnPropertyNameChanged 부분 메서드(Partial Method)는 값이 설정된 후에 호출됩니다. 이러한 부분 메서드(Partial Method)를 구현하여 비즈니스 논리를 추가합니다.

참고 항목

개념

개체 사용자 지정(Entity Framework)

기타 리소스

Entity Data Model Tools