#json #entity-framework #quickbooks #devart
#json #entity-framework #quickbooks #devart
Вопрос:
Я использую утилиту dotConnect для Quickbooks от Devart для создания некоторых общих записей журнала в Quickbooks Online с использованием C # и Entity Framework. (dotConnect для Quickbooks — версия 1.10, а Entity Framework — версия 6)
Я нашел статью на форуме Devart: ссылка на форум, в которой говорилось, что это не обычная прогулка Entity Framework в парке.
Служба поддержки предложила OP собрать запись в формате Json и назначить ее JournalEntry.Свойство строки.
Когда я делаю это, выдается ошибка: «Не удается преобразовать объект типа ‘Newtonsoft.Json.Linq.g’ в тип ‘Newtonsoft.Json.Linq.o'»
при нажатии на …Метод SaveChanegs(). Запрос Google на эту ошибку ничего не дал. Кто-нибудь сталкивался с этим раньше?
До сих пор я пытался:
- использование массива объектов, а не списка объектов
- использование сериализатора Json от Microsoft
Спасибо!
Вот код: «‘
QuickbooksEntities contextQuickbooks = new QuickbooksEntities();
JournalEntry je = new JournalEntry();
//Query to the the QBO Account objects for our known AcctNum values
Account creditAccount = contextQuickbooks.Accounts.Where(x => x.AcctNum == "4060-1").FirstOrDefault();
Account debitAccount = contextQuickbooks.Accounts.Where(x => x.AcctNum == "1111").FirstOrDefault();
// Build the credit and debit objects
JournalEntryLineItem creditLine = new JournalEntryLineItem();
creditLine.LineId = "0";
creditLine.JournalEntryLineDetail_AccountRefId = creditAccount.Id;
creditLine.JournalEntryLineDetail_AccountRefName = creditAccount.Name;
creditLine.JournalEntryLineDetail_PostingType = "Credit";
creditLine.DetailType = "JournalEntryLineDetail";
creditLine.Amount = (decimal)3;
JournalEntryLineItem debitLine = new JournalEntryLineItem();
debitLine.LineId = "1";
debitLine.JournalEntryLineDetail_AccountRefId = debitAccount.Id;
debitLine.JournalEntryLineDetail_AccountRefName = debitAccount.Name;
debitLine.JournalEntryLineDetail_PostingType = "Debit";
debitLine.DetailType = "JournalEntryLineDetail";
debitLine.Amount = (decimal)3;
// Add the line items to a list
List<JournalEntryLineItem> lines = new List<JournalEntryLineItem>();
lines.Add(creditLine);
lines.Add(debitLine);
// Convert the list of line item objects to json
var json = Newtonsoft.Json.JsonConvert.SerializeObject(lines);
//JournalEntry journalEntry = new JournalEntry();
je.TxnDate = DateTime.Now.Date;
je.CurrencyRefId = "USD";
// Pass the json string to the JournalEntry.Line property
je.Line = json;
// The Entity Framework magic
contextQuickbooks.JournalEntries.Add(je);
contextQuickbooks.SaveChanges();
»’
Ответ №1:
Ошибка с сериализацией пустых значений поля LinkedTxn в объекте JournalEntryLineItem исправлена в dotConnect для QuickBooks версии v1.10.1351.
JSON (Newtonsoft.Сериализации Json, Microsoft.Text.Json) и YAML (YamlDotNet) поддерживаются в EF Core (через шаблон EF Core) и EF6 (через шаблон DbContext) в версии v1.10.1375.
Обратитесь к https://www.devart.com/dotconnect/quickbooks/revision_history.html.