2017-01-12 3 views
0

crm (온 프레미엄)에 연결하여 계정 레코드를 검색하는 wcf가 있습니다. 엔티티가 검색 될 때 현재 레코드를 보유하지 않는 경우를 볼 수 있습니다. 즉, 일부 필드는 여전히 이전 열 값을 보유합니다. 나는 아무 소용이없는 다양한 병합 옵션을 시도했다. 아래 코드를 참조하십시오XrmServiceContext 개체가 CRM에서 최신 데이터를 가져 오지 않습니다.

using (XrmServiceContext cContext = new XrmServiceContext(con)) 
{     
    Entity ent = cContext.Retrieve(ConstantKVP.AccountSchema.ENTITY_LOGICAL_NAME, AccountId, new ColumnSet(true)); 
} 

어떤 제안이 있습니까? 취득이 MergeOption.OverwriteChanges

또는

는 최대 newed organizationservice 전달하여 새로운 XrmServiceContext 객체를 생성 사용 cContext.ClearChanges();

사용 명확 변경 사항을 저장 한 후

+0

변경하려는 데이터가 저장되었는지 확인하면 컨텍스트가 데이터베이스 값에 액세스합니다. 이러한 새로운 값을 저장하지 않고 UI를 변경하면 데이터베이스에 유지되지 않습니다. –

+0

저는 제 스스로를 올바르게 설명하지 않았다고 생각합니다. 데이터는 crm 형식을 사용하여 crm에 직접 저장됩니다. wcf는 그 후에 날짜를 검색하지만 여전히 필드의 이전 값을 유지합니다 ... –

답변

0

는 그것을 가능 데이터가 캐시되고 있습니까?

cContext.TryAccessCache(cache => cache.Mode = OrganizationServiceCacheMode.Disabled);

은 내가 CrmOrganizationServiceContext이 착수했습니다, 그래서 아마 같은 이론이 적용됩니다.

+0

이미 변경된 <이름 = "xRM을"유형 = "Xrm.XrmServiceContext, SCV"/ 추가>를 코드를 사용하여 초기 바인딩 된 org 서비스 프록시를 사용합니다. 코드는 데이터 모델의 중요한 변경 사항으로 훨씬 더 깔끔하게 보입니다. 그러나 어쨌든 대답 +1 –

0

:

var uncachedOrganizationService = new OrganizationService("Xrm"); 
var uncachedXrmServiceContext = new XrmServiceContext(uncachedOrganizationService); 
var ent = uncachedXrmServiceContext.Retrieve(ConstantKVP.AccountSchema.ENTITY_LOGICAL_NAME,AccountId,new ColumnSet(true)); 
+0

미안하지만 첫 번째 해결책이 작동하지 않았습니다 .. 두 번째 것은 약간의 중복으로 보입니다 .. 나는 빠른 콘솔 어플리케이션 그리고 그것을 사용하는 것 같습니다 조직의 serviceproxy이 문제가 발생하지 않습니다. 그러나 그것은 초기 결속 수업에 작별 인사를하는 것을 의미합니다. –

+0

변경을 취소하기 전에 객체를 분리 했습니까? – dynamicallyCRM

+0

존재하기 때문에 나는 객체를 붙이지 않을 것이다. 나는 처음으로 레코드를 선택하는 중입니다 ... –