2013-07-11 4 views
1

Я пытаюсь создать клиента, используя библиотеку QuickBooks .NET REST API v2. В вызове метода Add() объекта DATASERVICE подать запрос, я получаю сообщение об ошибке, что я не понимаю:Ошибка при попытке вставить клиента

"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 Docs - 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

Привет Манасе, я не понимаю, что вы имеете в виду под «вы можете проверить с помощью простых сеттеры сущностей Customer « – DBallantyne

+0

Я хотел сказать .. Клиент c = новый Клиент(); 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

Смежные вопросы