2017-10-17 110 views
0

我有以下代碼:添加DynamicPropertyInstance沒有標註的SalesOrderDetail爲有效

var propertyInstance = new DynamicPropertyInstance() 
{ 
    DynamicPropertyId = new EntityReference(DynamicProperty.EntityLogicalName, Guid.Parse("0ceedfcc-68b2-e711-8168-e0071b658ea1")), 
    ValueString = jobId.ToString(), 
    RegardingObjectId = line.ToEntityReference(), 
}; 

crmContext.AddObject(dynamicPropertyInstance); 
crmContext.SaveChanges(); 

它成功添加DynamicPropertyInstance到SalesOrderLine,但在CRM UI查看訂單時,不通過驗證(因爲它是必需的屬性)。我還沒有設法找到使這個屬性有效的方法。編輯我在UI中添加的屬性(重置值)也無法將該實例標記爲有效。通過UI 添加完全相同的屬性,將其標記爲有效。

DynamicProperty的Id是正確的,通過通過SDK加載2個實例記錄和比較屬性進行驗證。奇怪的是,當我通過SDK加載2條記錄時,我在代碼中創建的記錄的validationstatus爲真(即使不是這樣),我在UI中創建的記錄有validationstatus爲假,ValueString返回null(這是錯誤的)。所有其他屬性匹配或有相關的值(如日期,對象ID等)

我可能缺少一個方法調用來重新計算實例是否有效,但我找不到任何東西文檔來支持。如果做不到這一點,這可能引發與微軟支持的情況下,在CRM

回答

0

的錯誤,並給出了一些解決方法代碼:

//Get DynamicPropertyInstance 

UpdateProductPropertiesRequest UpdateRequest = new UpdateProductPropertiesRequest(); 
UpdateRequest.PropertyInstanceList = new EntityCollection(); 
UpdateRequest.PropertyInstanceList.EntityName = DynamicPropertyInstance.EntityLogicalName; 
Entity dpInstance = new Entity(DynamicPropertyInstance.EntityLogicalName, Dpi.Id); 
dpInstance.Attributes.Add(nameof(Dpi.ValueString).ToLower(), "Blarg"); 
dpInstance.Attributes.Add(nameof(Dpi.DynamicPropertyInstanceid).ToLower(), Dpi.Id); 
dpInstance.Attributes.Add(nameof(Dpi.RegardingObjectId).ToLower(), new EntityReference(SalesOrderDetail.EntityLogicalName, line.Id)); 
dpInstance.Attributes.Add(nameof(Dpi.DynamicPropertyId).ToLower(), new EntityReference(DynamicProperty.EntityLogicalName, dpId)); 

UpdateRequest.PropertyInstanceList.Entities.Add(dpInstance); 

crmContext.Execute(UpdateRequest); 

基本上,它看起來像你必須重新設置或重新連接CRM的實體將其提供,因此這是解決CRM中的錯誤的一種解決方法。

相關問題