만들기, 업데이트 및 삭제를 위해 초기 바인딩 엔터티 클래스 사용
게시 날짜: 2017년 1월
적용 대상: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Microsoft Dynamics 365(온라인 및 온-프레미스)에서 코드 생성 도구(CrmSvcUtil)로 만든 초기 바인딩 엔터티 클래스와 엔터티 데이터 모델을 사용하여 비즈니스 데이터를 사용할 수 있습니다. 조직 서비스 컨텍스트를 사용하거나 사용하지 않고 이러한 초기 바인딩 클래스를 사용할 수 있지만 생성된 조직 서비스 컨텍스트 클래스를 사용하는 것이 좋습니다. 컨텍스트는 관계를 효율적으로 관리하려고 하지만 직접 작성한 코드가 일반적으로 훨씬 더 효율적일 수 있습니다.
참고
레코드 업데이트는 특정 순서대로 적용됩니다. 첫째, 기본 엔터티가 처리된 후 관련 엔터티가 처리됩니다. 조회할 기본 엔터티 또는 관련 엔터티 특성이 변경되면 관련 엔터티는 동일한 엔터티를 업데이트하고 관련 엔터티 값은 유지됩니다. 일반적으로 동일한 관계에 대해 조회 특성 값과 RelatedEntities(또는 탐색 속성)의 해당 값은 동시에 사용하지 않아야 합니다.
이 항목의 내용
OrganizationServiceContext 클래스 사용
초기 바인딩 엔터티 클래스와 OrganizationServiceContext 클래스를 사용하여 새 엔터티 레코드를 만듭니다.
초기 바인딩 엔터티 클래스와 OrganizationServiceContext 클래스를 사용하여 엔터티 레코드를 업데이트합니다.
초기 바인딩 엔터티 클래스와 OrganizationServiceContext 클래스를 사용하여 엔터티 레코드를 삭제합니다.
컨텍스트 개체 없이 초기 바인딩 엔터티 클래스 사용
OrganizationServiceContext 클래스 사용
코드 생성 도구에서 만들고 OrganizationServiceContext에서 상속되는 조직 서비스 컨텍스트 클래스는 데이터 변경 내용을 추적하는 데 사용됩니다. 컨텍스트는 Microsoft Dynamics 365의 데이터를 표현하는 엔터티 유형의 인스턴스에 해당하는 개체를 추적합니다. 조직 서비스 컨텍스트의 개체를 만들고, 수정 및 삭제할 수 있으며 Microsoft Dynamics 365은 이러한 개체에 대한 변경 내용을 수정합니다.OrganizationServiceContext.SaveChanges 메서드가 호출되면 Microsoft Dynamics 365은 Microsoft Dynamics 365의 데이터에 대한 동일한 삽입, 업데이트 또는 삭제 문을 실행하는 명령을 생성하고 실행합니다.
초기 바인딩 엔터티 클래스를 사용하는 경우 엔터티 이름과 특성 스키마 이름을 사용하여 작업할 엔터티 또는 특성을 지정합니다. 특성 스키마 이름은 EntityMetadata.SchemaName 및 AttributeMetadata.SchemaName에서 정의되거나, 코드 생성 파일에 표시된 클래스 및 속성의 이름들을 사용할 수 있습니다. 다음 샘플은 새 상수 인스턴스의 이메일 특성에 값을 할당하는 방법을 보여줍니다.
Contact contact = new Contact();contact.EMailAddress1 = “sonny@contoso.com”;
초기 바인딩 엔터티 클래스를 사용하여 기본 데이터베이스 작업을 수행하는 방법을 보여 주는 전체 코드 샘플은 샘플: 레코드 만들기, 검색, 업데이트 및 삭제(초기 바인딩)를 참조하십시오.
초기 바인딩 엔터티 클래스와 OrganizationServiceContext 클래스를 사용하여 새 엔터티 레코드를 만듭니다.
엔터티 데이터 모델을 사용하여 Microsoft Dynamics 365에 데이터를 삽입하려면 엔터티 유형의 인스턴스를 만들고 조직 서비스 컨텍스트에 개체를 추가해야 합니다. 조직 서비스 컨텍스트에서 개체를 Microsoft Dynamics 365에 저장하려면 먼저 개체를 추적해야 합니다.
새 엔터티 레코드를 만들 때 OrganizationServiceContext.AddObject 메서드를 사용하여 조직 서비스 컨텍스트에 개체를 추가합니다.
다음 샘플에서는 엔터티 데이터 모델을 사용하여 새 연락처 레코드를 인스턴스화하고 저장하는 방법을 보여 줍니다. 사용자 지정 특성에 액세스하는 방법도 보여 줍니다.
OrganizationServiceContext orgContext =new OrganizationServiceContext(_serviceProxy);
Contact contact = new Contact()
{
FirstName = "Charles",
LastName = "Brown",
Address1_Line1 = "123 Main St.",
Address1_City = "Des Moines",
Address1_StateOrProvince = "IA",
Address1_PostalCode = "21254",
new_twittername = "Chuck",
Telephone1 = "123-234-5678"
};
orgContext.AddObject(contact);orgContext.SaveChanges();
컨텍스트에 개체를 추가한 후 OrganizationServiceContext.SaveChanges 메서드를 호출하기 전에 컨텍스트는 새 개체에 대한 ID를 생성합니다.Microsoft Dynamics 365 데이터에 대한 업데이트에 실패하면 SaveChangesResults가 포함된 예외가 SaveChanges 메서드에서 발생합니다.
초기 바인딩 엔터티 클래스와 OrganizationServiceContext 클래스를 사용하여 엔터티 레코드를 업데이트합니다.
Microsoft Dynamics 365은 조직 서비스 컨텍스트에 첨부된 개체에 대한 변경 내용을 추적합니다. 기존 엔터티 레코드를 수정하려면 먼저 컨텍스트에 개체를 추가해야 합니다. 컨텍스트에 개체를 추가하려면 먼저 Microsoft Dynamics 365에서 엔터티 레코드를 검색한 후 OrganizationServiceContext.Attach 메서드를 사용하여 컨텍스트에 개체를 추가해야 합니다. 컨텍스트에서 개체를 추적하면 엔터티의 특성을 설정하여 레코드를 업데이트할 수 있습니다.
다음 샘플에서는 초기 바인딩 클래스를 사용하여 계정 특성을 업데이트하는 방법을 보여 줍니다.
Account.EMailAddress1 = “Contoso-WebMaster@contoso.com”;
다음 샘플에서는 특성 값을 삭제하는 방법을 보여 줍니다.
Account.EMailAddress1 = null;
각 엔터티에는 OnPropertyChanging 및 OnPropertyChanged라는 부분 메서드가 두 개 있습니다. 이러한 메서드는 속성 설정자에서 호출됩니다. 사용자 지정 비즈니스 논리를 삽입하도록 partial 클래스를 사용하여 이러한 메서드를 확장할 수 있습니다.
초기 바인딩 엔터티 클래스와 OrganizationServiceContext 클래스를 사용하여 엔터티 레코드를 삭제합니다.
엔터티 레코드를 삭제하려면 조직 서비스 컨텍스트에서 개체를 추적해야 합니다. 개체가 컨텍스트에 있으면 OrganizationServiceContext.DeleteObject 메서드를 사용하여 컨텍스트에서 삭제할 개체를 표시할 수 있습니다.Microsoft Dynamics 365의 엔터티 레코드는 OrganizationServiceContext.SaveChanges 메서드를 호출할 때까지 삭제되지 않습니다.
컨텍스트 개체 없이 초기 바인딩 엔터티 클래스 사용
컨텍스트 개체를 만들고 싶지 않을 경우 조직 서비스 컨텍스트 개체를 만들지 않고 초기 바인딩 엔터티 클래스를 사용할 수 있습니다.OrganizationServiceProxy 클래스는 OrganizationServiceProxy를 포함합니다. 엔터티 레코드 변경을 Microsoft Dynamics 365에 저장하는 데 사용할 수 있는 Create 방법.
다음 샘플에서는 조직 서비스 컨텍스트 개체를 만들지 않고 초기 바인딩 엔터티 클래스를 사용하는 방법을 보여 줍니다.OrganizationServiceProxy.Create 방법은 새로 생성된 엔터티 레코드에 지정된 GUID ID를 반환합니다.
Contact contact = new Contact()
{
FirstName = "Charles",
LastName = "Brown",
Address1_Line1 = "123 Main St.",
Address1_City = "Des Moines",
Address1_StateOrProvince = "IA",
Address1_PostalCode = "21254",
Telephone1 = "123-234-5678"
};
_contactId = _serviceProxy.Create(contact);
Microsoft Dynamics 365의 엔터티 레코드를 업데이트하려면 업데이트될 데이터를 검색하여, 필요한 변경을 한 다음, OrganizationServiceProxy를 사용합니다. 그러한 변경을 Microsoft Dynamics 365에 적용하기 위한 Update 방법. 엔터티 레코드를 검색하려면 OrganizationServiceProxy를 사용합니다. 단일 개체 검색 또는 OrganizationServiceProxy를 위한 Retrieve 방법. 복수 개체 검색을 위한 RetrieveMultiple 방법. 엔터티 레코드를 삭제하려면 OrganizationServiceProxy를 사용합니다.Delete 메서드.
참고 항목
코드에 초기 바인딩 엔터티 클래스 사용
초기 바인딩 엔터티 클래스를 사용하여 관련 레코드 간 연결 추가 또는 업데이트
코드 생성 도구(CrmSvcUtil.exe)를 사용하여 초기 바인딩 엔터티 클래스 만들기
샘플: 레코드 만들기, 검색, 업데이트 및 삭제(초기 바인딩)
Microsoft Dynamics 365
© 2017 Microsoft. All rights reserved. 저작권 정보