2014-10-29 2 views
0

Dynamics CRM Plugin을 "사전 유효성 검사"에 등록하고 삭제시 트리거합니다. 특정 부모 레코드에 대한 자식 레코드의 날짜 필드의 최대 값을 검색하는 LINQ 쿼리가 내부에 있습니다.Dynamics CRM Plugin - LINQ 쿼리 ('사전 유효성 검사')

var q = (from e1 in serviceContext.CreateQuery<entity1>() 
     join e2 in serviceContext.CreateQuery<entity2>() on e1.typeid.Id equals e2.codeId 
     where e1.statecode == 0 && e1.ParentId.Id.Equals(new Guid(ParentGuidStr)) 
     orderby e1.dt descending 
     select new {e1.dt, e2.code}).ToList(); 

플러그인에 트리거하는 레코드가 비활성 상태 일 때 나는 위의 질의에 다음과 같은 오류가 점점 오전 : 여기

내 코드입니다

PreValidateEntity1Delete PlugIn Error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.ArgumentNullException: Value cannot be null. Parameter name: g

나는 확실하지 않다 이유를 위의 오류가 발생하고 비활성 자식 레코드와 부모 레코드 사이의 링크가 LINQ 쿼리에서 끊어 지거나 다른 이유가있는 경우

답변

2

먼저 모든 아동 기록에 학부모 기록이 있는지 확인하십시오.

where e1.statecode == 0 && e1.ParentId != null && e1.ParentId.Id.Equals(new Guid(ParentGuidStr)) 

문제의 EntityReference 필드 (e1.ParentId는) null이 될 수 있다는 것이다 및 액세스에 null의 실체를 시도 할 때, 오류가 나타납니다 그런 다음에 당신의 위치를 ​​contidion을 변경합니다.

그렇기 때문에 e1.typeid도 조인 조건에서 null이 아닌지 확인해야합니다.

또는 2 개의 개별 쿼리로 해결 방법을 시도하고 결과에서 정보를 수집 할 수 있습니다.

행운을 빈다.

관련 문제