2013-07-11 18 views
1

我正在嘗試使用QuickBooks .NET REST API v2庫創建客戶。在調用的DataService對象的Add()方法來提交請求,我得到我不明白的錯誤消息:嘗試插入客戶時收到錯誤

"EntityManager must be access within a transaction" 

谷歌搜索錯誤消息變成了幾命中相對於Java的,但沒有一個看起來像他們真正解決了這個問題,我也沒有在Intuit-Partner-Platform文檔中找到關於該信息的任何文檔。

using Intuit.Ipp.Data.Qbd; 

      OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET); 
      ServiceContext context = new ServiceContext(oauthValidator, Constants.APP_TOKEN, realmID, IntuitServicesType.QBD); 
      DataServices dataServices = new DataServices(context); 


      var writeCust = new Customer() 
      { 
       Name = "Carlos Verdona", 
       TypeOf = partyType.Person, 
       Address = new PhysicalAddress[] 
       { 
        new PhysicalAddress() 
         { 
          Line1 = "217 Tarboro Highway", 
          Line2 = "Apt. D", 
          City = "Langleyville", 
          CountrySubDivisionCode = "NC", 
          PostalCode = "55712", 
          Tag = new string[]{"Billing"} 
         } 
       }, 
       Phone = new TelephoneNumber[] 
       { 
        new TelephoneNumber() 
        { 
         DeviceType = "Work", 
         FreeFormNumber = "111-345-3456" 
        }, 
        new TelephoneNumber() 
        { 
         DeviceType = "Mobile", 
         FreeFormNumber = "111-345-3457" 
        } 
       }, 
       WebSite = new WebSiteAddress[] 
       { 
        new WebSiteAddress() 
        { 
         URI = "http://www.HorseBrains.com" 
        } 
       }, 
       Email = new EmailAddress[] 
       { 
        new EmailAddress() 
        { 
         Address = "[email protected]" 
        } 
       }, 
       GivenName = "", 
       MiddleName = "", 
       FamilyName = "", 
       DBAName = "", 
       ShowAs = "Carlos Verdona", 
       //CustomField = new CustomField[] 
       //{ 
       // new BooleanTypeCustomField() 
       // { 
       //  DefinitionId = "Bill With Parent", 
       //  Value = true 
       // }, 
       // new StringTypeCustomField() 
       // { 
       //  DefinitionId = "Preferred Delivery Method", 
       //  Value = "PRINT" 
       // } 

       //}, 
       SalesTermId = new IdType() {idDomain = idDomainEnum.QBO, Value = "8" }, 

      }; 

      //Create Customer 
      Customer output = dataServices.Add(writeCust); 

感謝您的任何建議,你可以給!

回答

0

請嘗試Apiexploer工具,通過直接調用「創建客戶端點創建客戶對象。 https://developer.intuit.com/apiexplorer?apiName=V2QBO

你也可以參考下面的文檔API和.Net devkit鏈接。

API文檔 - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/v2/0400_quickbooks_online/customer

同步調用,參考文件 - https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0100_ipp_.net_devkit/0299_synchronous_calls/0001_data_service_apis

ASYN呼叫參考文件 - https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0100_ipp_.net_devkit/0300_asynchronous_calls/0001_data_service_apis

希望這些將是

您可以檢查使用普通的制定者Customer實體的有用。

+0

嗨瑪納斯,我不明白你的意思是「你可以檢查使用普通的制定者客戶實體「 – DBallantyne

+0

我的意思是...... Customer c = new Customer(); c.setName(「」)。我認爲這種做法是更可讀的(我認爲) 和構建對象之前..最好是使用apiexplorer測試對象。它有助於檢測XML特定的錯誤或語法錯誤。 –

0

我注意到,您正在使用Intuit.Ipp.Data.Qbd參考;因此客戶對象是爲QBD創建的。然後在最後幾行中,您將id域作爲QBO傳遞給我: SalesTermId = new IdType(){idDomain = idDomainEnum.QBO,Value =「8」},

請更正此問題。 使用正確的庫Intuit.Ipp.Data.Qbo

+0

還有一個問題,您將字符串類型作爲標記值傳遞給地址,而它需要PhysicalAddresslabelType的枚舉。 –

0

附加供您參考示例代碼:enter image description here

相關問題