Оказывается, в этом случае сообщение об ошибке было SPOT ON.Вот как я нашел свою ошибку.Надеюсь, это поможет другим в будущем:
Моя сущность была вставлена без проблем, и на самом деле сообщение об ошибке было правильным.Как я выяснил, что происходит?Я обернул содержимое моего метода сохранения следующим кодом:
System.IO.IsolatedStorage.IsolatedStorageFile iso = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication();
using (checkbookDB.Log = new System.IO.StreamWriter(iso.CreateFile("log.txt")))
{
}
Поэтому, когда в этом методе произойдет ошибка, он запишет результаты в текстовый файл.После того, как я получил сообщение об ошибке, я загрузил файл из эмулятора, используя IsolatedStorageExplorerTool, поставляемый с WP7 SDK.Что я нашел в текстовом файле?
-- CURSOR BASED INSERT [Payees]
-- [PayeeName] <= [test payee]
-- [Active] <= []
-- AUTOSYNC [_version] <= [System.Byte[]]
-- AUTOSYNC [PayeeId] <= [13]
-- CURSOR BASED INSERT [Transactions]
-- [TransDate] <= [1/1/0001 12:00:00 AM]
-- [TransAmount] <= [0]
-- [TransType] <= [0]
-- [RefNum] <= []
-- [Memo] <= []
-- [PayeeId] <= [0]
-- [CategoryId] <= []
-- [AccountId] <= [1]
-- [Cleared] <= [False]
Хмм .... Хорошо ... Похоже, мой получатель платежа вставляется правильно, и у меня даже есть новый идентификатор PayeeId.Но подождите ... Сделка?Почему транзакция пытается вставить?
Welp: Я новичок в MVVM.Последние полтора месяца я работал с ним в нерабочее время, поэтому я не знаком с лучшими практиками.На моей ViewModel я создал публичную сущность с именем account.Я использовал эту переменную для отслеживания выбранной учетной записи в приложении, поэтому правильные данные отображаются повсюду.На своей странице, с которой я пытался сохранить нового Получателя, при создании страницы я создаю экземпляр объекта «Транзакция», чтобы отобразить данные в / из элементов управления на экране.В моем методе OnNavigatedTo я настраивал
transaction.Account = App.ViewModel.account
Так что, когда я собирался сохранить транзакцию, я знал, в какую учетную запись ее сохранить.Хорошо, что это действительно делало (я думаю), говорило моему тексту данных, что Эй!У меня есть объект транзакции, который я изменяю, добавляя к нему учетную запись.Поэтому, когда я вводил метод datacontext.SaveChanges, он пытался сохранить пустую сущность транзакции BLANK.
Почему эта строка находилась в OnNavigatedTo?Я не уверен.Я переместил его в метод Save, где он принадлежит.
/ doh