1

假設我們在Dynamics 365中有一個Account實體,帳戶有c5號碼和名稱屬性。當對象上的屬性不存在時,Dynamics365 web api中如何處理?

現在我想通過動態365 Web API創建一個新帳戶。我使用c5編號創建了一個賬戶對象,並且我添加了一個aditional屬性lastname。 當我發佈此帳戶對象的Web API,我會得到這樣的錯誤:

"code":"","message":"The property 'lastname' does not exist on type 'Microsoft.Dynamics.CRM.account'. Make sure to only use property names that are defined by the type.","innererror":{ 

    "message":"The property 'lastname' does not exist on type 'Microsoft.Dynamics.CRM.account'. Make sure to only use property names that are defined by the ... 

我真的不uderstand爲什麼動力學365的Web API只是不能忽視房地產的,它不能使用?

在這個特定的情況下,這意味着如果我們刪除賬戶實體的名稱屬性,我們所有與Web API交談的系統都有可能崩潰。

我該如何解決這個問題?無論如何強迫動態365 Web API忽略一些propertys?

+0

你必須要接受最終,應用程序將不得不嘗試插入到所請求的數據庫列 - 這是正常的行爲,這會爲不存在的列會失敗。至於刪除:這隻會是自定義屬性的情況 - 您不能刪除標準/託管屬性。 – Filburt

+0

我想知道是否可以使用MetaData服務在運行時查找給定實體的屬性,然後過濾「POST」以僅包含您連接的實例中提供的屬性。看起來像一個可能的候選人在MSDN的描述 - https://msdn.microsoft.com/en-us/library/mt607522.aspx#Retrieving屬性一些[所以答案](https://stackoverflow.com/a/23445922/685760)也展示瞭如何去做這件事。 –

+0

如果檢索實體元數據的開銷太大,您可以創建一個包含所有(必需)屬性的「默認記錄」,並用'new ColumnSet(true)'(SELECT * FROM)檢索此記錄,這將產生一個實體實例所有有效的屬性。將它的ID重置爲空,根據需要更新屬性並'.Create()'。風險自負。我仍然建議根據實體(邏輯名稱)和/或實體元數據來決定觸摸屬性。 – Filburt

回答

0

Web Api不僅不會忽略未使用的值,而且即使在更新時,它也會更新您發送的所有值,即使它們相同。作爲一個步驟可以 - 通過將其設置爲非NonSerialized來忽略此值,它將被排除。另外,您可以爲類成員定義命名,所以您不必擔心它們在代碼中的命名方式。

`[Serializable] 
public class Account { 
    [NonSerialized] 
    public string lastname; 

    [JsonProperty("firstname")] 
    public string firstName; 

    [JsonProperty("index")] 
    public int c5; 
} 
相關問題