2

我正在使用Microsoft Dynamics Web API将数据写入 Microsoft Dynamics 365 中的实体。当我尝试执行深度插入时收到错误消息

未声明的属性 'ccseq_employeeid' 在有效负载中仅具有属性注释,但在有效负载中未找到属性值。在 OData 中,只有声明的导航属性和声明的命名流可以表示为没有值的属性。

为什么我会收到此错误,我该如何解决该错误?

JSON

{
    "ccseq_importdate" : "2017-05-28T04:00:00Z", 
    "ccseq_month" : "1", 
    "ccseq_year" : "2017", 
    "ccseq_name" : "Test", 
    "ccseq_status" : "100000000", "ccseq_ccseq_expensetransactionset_ccseq_expensetransaction_ExpenseTransactionSetID" : 
    [ 
        { 
          "ccseq_employeeid@odata.bind": "/systemusers(6d2fd71b-32d1-dd11-a4f5-001a6449bbe7)", 
          "ccseq_clientid@odata.bind": "/ccseq_clients(663ebd00-73b9-4faf-90ed-f56bb9c2dc9b)", 
          "ccseq_navemployeeid" : "11111", 
          "ccseq_employeefirstname" : "John"
        }
    ]
}

ExpenseTransactionSet是具有查找的ExpenseTransaction含义的父级。 是一对多的关系。并且是在.ExpenseTransactionExpenseTransactionSetccseq_ccseq_expensetransactionset_ccseq_expensetransaction_ExpenseTransactionSetIDsystemuserccseq_clientsExpenseTransaction

我还尝试了以下变体"ccseq_employeeid@odata.bind"

  • objectid_systemuser@odata.bind
  • objectid_ccseq_employeeid@odata.bind
  • ccseq_employeeid@data.bind
  • ccseq_employeeid@odata.bind : systemusers()
  • ccseq_employeeid_systemusers@odata.bind
  • systemuserid_systemusers@odata.bind

我已经看到了这个问题和这个问题,并尝试了建议的解决方案但没有成功。

4

2 回答 2

3

我在阅读此线程时发现了答案。深度插入中导航属性的正确语法是使用子实体名称,后跟带有字段名称的括号。json需要改成如下

{
    "ccseq_importdate" : "2017-05-28T04:00:00Z", 
    "ccseq_month" : "1", 
    "ccseq_year" : "2017", 
    "ccseq_name" : "Test", 
    "ccseq_status" : "100000000",
    "ccseq_ccseq_expensetransactionset_ccseq_expensetransaction_ExpenseTransactionSetID" : 
    [ 
        {
          // Next two lines are changed 
          "ExpenseTransaction[ccseq_employeeid@odata.bind]": "/systemusers(6d2fd71b-32d1-dd11-a4f5-001a6449bbe7)", 
          "ExpenseTransaction[ccseq_clientid@odata.bind]": "/ccseq_clients(663ebd00-73b9-4faf-90ed-f56bb9c2dc9b)", 
          "ccseq_navemployeeid" : "11111", 
          "ccseq_employeefirstname" : "John"
        }
    ]
}
于 2017-07-05T13:15:53.547 回答
0

在元数据文档{org-url}/api/data/v8.0/$metadata中,您可以检查集合值导航属性的元素类型ccseq_ccseq_expensetransactionset_ccseq_expensetransaction_ExpenseTransactionSetID吗?

它与ccseq_employeeid导航属性的类型相同吗?如果不是,并且该属性ccseq_employeeid属于派生类型,您可能需要如下注释导航属性对象:

{
    "ccseq_importdate" : "2017-05-28T04:00:00Z", 
    "ccseq_month" : "1", 
    "ccseq_year" : "2017", 
    "ccseq_name" : "Test", 
    "ccseq_status" : "100000000",
    "ccseq_ccseq_expensetransactionset_ccseq_expensetransaction_ExpenseTransactionSetID" : 
    [ 
        {
          "@odata.type": "Microsoft.Dynamics.CRM.ccseq_navemployee",
          "ccseq_employeeid@odata.bind": "/systemusers(6d2fd71b-32d1-dd11-a4f5-001a6449bbe7)", 
          "ccseq_clientid@odata.bind": "/ccseq_clients(663ebd00-73b9-4faf-90ed-f56bb9c2dc9b)", 
          "ccseq_navemployeeid" : "11111", 
          "ccseq_employeefirstname" : "John"
        }
    ]
}
于 2017-06-29T11:53:06.960 回答