2011-08-04 2 views
2

Microsoft CRM 4.0 용 고급 개발자 확장에서 CRM에 LINQ를 사용하고 있습니다. 그것은 직접 쿼리와 함께 잘 작동합니다. 쿼리는 다음과 같습니다 그러나 나는 문제가 생겼어요 ". 속성 이름을 결정할 수 없습니다"Linq to CRM - 잘못된 연산 예외

는 InvalidOperationException이 던졌습니다
var connectionString = @"User ID=u; Password=p; Authentication Type=AD; Server=http://crm:5555/UO"; 
var connection = CrmConnection.Parse(connectionString); 
var dataContext = new CrmDataContext(connection); 

var data = from u in dataContext.Accounts 
      select new 
      { 
       Id = u.AccountID, 
       Name = u.AccountName, 
      }; 

var r = from n in data 
     where n.Name.StartsWith("test") 
     select new 
     { 
      Id = n.Id 
     }; 

r.Dump(); 

조건이 첫 번째 쿼리에 직접 때 그것은 괜찮아요 : 나는 이런 종류의 오류에 대한 유용한 정보를 찾을 수 없습니다

var data = from n in dataContext.Accounts 
      where n.AccountName.StartsWith("test") 
      select new 
      { 
       Id = n.AccountID, 
       Name = n.AccountName, 
      }; 

. Xrm Linq Provider의 버그입니까? 미리 도움을 청하십시오.

답변

1

ToList()를 사용하여 초기 쿼리를로드하면 익명 형식에 대한 후자의 쿼리가 로컬에서 평가됩니다. 나는 당신이 많은 어카운트를 가지고 있지만 그것이 요점을 증명할 것 인 경우 이것은 이상적이지 않다. 당신은 근본적으로 마지막 문장에서 어쨌든 해결책을 가지고 있습니다.

.Dump()를 호출 할 때까지 첫 번째 쿼리가 전혀 실행되지 않기 때문에 두 번째 쿼리을 포함한 전체 식 이 다음 공급자를 찾는 중 하나 (지연 실행)로 평가됩니다. Name의 속성