2016-06-29 9 views
1

인벤토리의 각 라인 항목을 업데이트하기위한 필드를 얻으 려합니다. 이미 작성된 항목을 덮어 쓰지 않고 쿼리 식을 사용하여 필드를 업데이트하는 데 사용해야합니다.C# Dynamics 여러 제품을 사용할 때마다 오류가 발생합니다.

지금까지 단 하나의 광고 항목이있을 때까지 제대로 작동하도록했습니다. 그러나 여러 광고 항목에 대해이를 테스트 할 때마다 "지정된 키가 사전에 없습니다."라는 메시지가 나타납니다. 오류.

올바른 방향으로 어떤 도움이나 이동이 가능합니까?

QueryExpression lineitem = new QueryExpression("invoicedetail"); 
    lineitem.ColumnSet = new ColumnSet("quantity", "productid", "description"); 
    lineitem.Criteria.AddCondition("invoiceid", ConditionOperator.Equal, invoiceid); 

    EntityCollection results = server.RetrieveMultiple(lineitem); 
    Invoice.Attributes["aspb_bookmarksandk12educational"] = "Purchases"; 
    Invoice.Attributes["aspb_bookmarksandk12educational"] += "\n"; 
    Invoice.Attributes["aspb_bookmarksandk12educational"] += "Product" + "  " + "Quantity"; 
    Invoice.Attributes["aspb_bookmarksandk12educational"] += "\n"; 

    foreach (var a in results.Entities) 
      { 
    string name = a.Attributes["description"].ToString(); 
    string quantity = a.Attributes["quantity"].ToString(); 
    Invoice.Attributes["aspb_bookmarksandk12educational"] += " " + name + " "; 
    Invoice.Attributes["aspb_bookmarksandk12educational"] += quantity; 
    Invoice.Attributes["aspb_bookmarksandk12educational"] += "\n"; 
    } 

답변

1
"The given key was not present in the dictionary." 

문제가 당신이 속성 값이 아닌 여러 개체가 반환에 액세스하려고하는 방식에있다 제안합니다. 검사를 할 수 있도록하기 위해 SDK 확장 방법을 사용하여 더 나은

if (a.Attributes.ContainsKey("description")) 
{ 
    var name = a.Attributes["description"] as string; 
} 

또는 당신이 좋아에 대한 기본 값을 반환 : 당신이 속성 값을 얻을 때, 그래서 같은 값을 읽기 전에 속성이 존재하는지 확인하려고 그래서 :

var name = a.GetAttributeValue<string>("description"); 
var quantity = a.GetAttributeValue<decimal>("quantity"); 
+0

감사합니다. 나는 그것을 게시 한 후에 같은 생각을하고있었습니다. 나는 그 코드를 찾고 있었다. 나는 이것에 대해 알아보고 알려줄거야. – Daniel

+0

도움 주셔서 감사합니다. 그러나 두 가지 방법 (null을 잡는 다른 방법은 물론 모든 광고 항목에 데이터가 있는지 확인하는 방법)을 시도했지만 여전히 동일한 오류가 발생합니다. 하나의 광고 항목에서만 올바르게 작동하고 배수에서는 실패합니다. 다른 건 없나요? 나는 크게 도움을 주셔서 감사합니다 – Daniel

+0

여기에 더 많은 정보가 있습니다. 방금 다른 테스트 기록을 사용했고 문제없이 여러 줄 항목에 대해 작업했습니다. 그래서 그것은 다른 것과 관련이있을 수 있습니다. 희소 한 10 개의 광고 항목으로 사용한 원래 멀티 라인 항목입니다. 2 개만 사용하면 문제가 없습니다. 자 이제 코드가 아닌 다른 코드 일 것입니다. 도움을 주셔서 대단히 감사합니다. – Daniel