Windows phone 7 &引用;“FormatException未处理”;使用linq到sql从数据库中删除

Windows phone 7 &引用;“FormatException未处理”;使用linq到sql从数据库中删除,windows-phone-7,linq-to-sql,Windows Phone 7,Linq To Sql,我一直在阅读关于linq到sql CRUD操作的文章,据我所知,我是以正确的方式进行这项工作的,但在细节上有些错误 “我的笔记”集合未以任何方式连接到数据上下文。它包含需要删除然后插入的项目 List<NoteItem> notes = ConvertJsonToModel(apiResponse); 但是,Db.NoteItems已经填充,因此我需要更新现有的项。为了暂时保持简单,在执行上述插入之前,我正在尝试对现有项执行删除操作(我将在掌握删除操作后进行更新) 我得到的错误是:

我一直在阅读关于linq到sql CRUD操作的文章,据我所知,我是以正确的方式进行这项工作的,但在细节上有些错误

“我的笔记”集合未以任何方式连接到数据上下文。它包含需要删除然后插入的项目

List<NoteItem> notes = ConvertJsonToModel(apiResponse);
但是,Db.NoteItems已经填充,因此我需要更新现有的项。为了暂时保持简单,在执行上述插入之前,我正在尝试对现有项执行删除操作(我将在掌握删除操作后进行更新)

我得到的错误是:

未处理FormatException

这很奇怪,因为我可以插入一个错误的完全相同的注释,但我不能删除它

NoteItem有3个属性:字符串Id、DateTime ModifiedAt、字符串文本以及PropertyChanged和PropertyChanged事件

更新

System.FormatException was unhandled
  Message=FormatException
  StackTrace:
       at System.Int32.Parse(String s, NumberStyles style, IFormatProvider provider)
       at System.Convert.ToInt32(String value, IFormatProvider provider)
       at System.String.System.IConvertible.ToInt32(IFormatProvider provider)
       at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
       at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
       at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
       at System.Data.Linq.DBConvert.ChangeType(Object value, Type type)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.BuildKeyValues(TrackedObject item)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.DoResultSetDelete(TrackedObject item)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.Delete(TrackedObject item)
       at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
       at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
       at System.Data.Linq.DataContext.SubmitChanges()
       at DrivenNotes.ViewModels.NotesViewModel.OnOnePageUpdated(Object sender, StreamCompleteEventArgs e)
       at DrivenNotes.ApiCommunication.ApiComms.OnGotStreamPage(Object sender, DownloadStringCompletedEventArgs e)
       at System.Net.WebClient.OnDownloadStringCompleted(DownloadStringCompletedEventArgs e)
       at System.Net.WebClient.DownloadStringOperationCompleted(Object arg)
       at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
       at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark)
       at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
       at System.Delegate.DynamicInvokeOne(Object[] args)
       at System.MulticastDelegate.DynamicInvokeImpl(Object[] args)
       at System.Delegate.DynamicInvoke(Object[] args)
       at System.Windows.Threading.DispatcherOperation.Invoke()
       at System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority priority)
       at System.Windows.Threading.Dispatcher.OnInvoke(Object context)
       at System.Windows.Hosting.CallbackCookie.Invoke(Object[] args)
       at System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args)
       at System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult)
我刚才讨论了错误不会发生在所有记录上,因此是特定于数据的。然而,同样的数据也适用于插入

Stacktrace

System.FormatException was unhandled
  Message=FormatException
  StackTrace:
       at System.Int32.Parse(String s, NumberStyles style, IFormatProvider provider)
       at System.Convert.ToInt32(String value, IFormatProvider provider)
       at System.String.System.IConvertible.ToInt32(IFormatProvider provider)
       at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
       at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
       at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
       at System.Data.Linq.DBConvert.ChangeType(Object value, Type type)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.BuildKeyValues(TrackedObject item)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.DoResultSetDelete(TrackedObject item)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.Delete(TrackedObject item)
       at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
       at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
       at System.Data.Linq.DataContext.SubmitChanges()
       at DrivenNotes.ViewModels.NotesViewModel.OnOnePageUpdated(Object sender, StreamCompleteEventArgs e)
       at DrivenNotes.ApiCommunication.ApiComms.OnGotStreamPage(Object sender, DownloadStringCompletedEventArgs e)
       at System.Net.WebClient.OnDownloadStringCompleted(DownloadStringCompletedEventArgs e)
       at System.Net.WebClient.DownloadStringOperationCompleted(Object arg)
       at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
       at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark)
       at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
       at System.Delegate.DynamicInvokeOne(Object[] args)
       at System.MulticastDelegate.DynamicInvokeImpl(Object[] args)
       at System.Delegate.DynamicInvoke(Object[] args)
       at System.Windows.Threading.DispatcherOperation.Invoke()
       at System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority priority)
       at System.Windows.Threading.Dispatcher.OnInvoke(Object context)
       at System.Windows.Hosting.CallbackCookie.Invoke(Object[] args)
       at System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args)
       at System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult)

错误源于EF在
SubmitChanges()
期间试图将
字符串
转换为
int
,但遇到无法转换的字符串


最有可能的是其中一列上存在数据库/模型不匹配,最有可能的是
Id

堆栈跟踪是什么样子的?我正在WP7 emulator上运行,所以不完全确定如何获取堆栈跟踪在调试器下的Visual Studio中不运行堆栈跟踪?添加了堆栈跟踪。我太习惯于看到asp.net死亡黄屏了,以至于我忘了如何从VS中获取它!还添加了一个更新:错误不会发生在所有笔记上,它是正确的!虽然NoteItem.Id正确地是一个字符串,但我在数据库中错误地将Id设置为int(我的数据来自外部源,我观察到的大多数Id都是整数,现在我知道以后的数据都有十六进制Id)
System.FormatException was unhandled
  Message=FormatException
  StackTrace:
       at System.Int32.Parse(String s, NumberStyles style, IFormatProvider provider)
       at System.Convert.ToInt32(String value, IFormatProvider provider)
       at System.String.System.IConvertible.ToInt32(IFormatProvider provider)
       at System.Convert.DefaultToType(IConvertible value, Type targetType, IFormatProvider provider)
       at System.String.System.IConvertible.ToType(Type type, IFormatProvider provider)
       at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
       at System.Data.Linq.DBConvert.ChangeType(Object value, Type type)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.BuildKeyValues(TrackedObject item)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.DoResultSetDelete(TrackedObject item)
       at System.Data.Linq.ChangeDirector.StandardChangeDirector.Delete(TrackedObject item)
       at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
       at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
       at System.Data.Linq.DataContext.SubmitChanges()
       at DrivenNotes.ViewModels.NotesViewModel.OnOnePageUpdated(Object sender, StreamCompleteEventArgs e)
       at DrivenNotes.ApiCommunication.ApiComms.OnGotStreamPage(Object sender, DownloadStringCompletedEventArgs e)
       at System.Net.WebClient.OnDownloadStringCompleted(DownloadStringCompletedEventArgs e)
       at System.Net.WebClient.DownloadStringOperationCompleted(Object arg)
       at System.Reflection.RuntimeMethodInfo.InternalInvoke(RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder binder, Object parameters, CultureInfo culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess, StackCrawlMark& stackMark)
       at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, StackCrawlMark& stackMark)
       at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
       at System.Delegate.DynamicInvokeOne(Object[] args)
       at System.MulticastDelegate.DynamicInvokeImpl(Object[] args)
       at System.Delegate.DynamicInvoke(Object[] args)
       at System.Windows.Threading.DispatcherOperation.Invoke()
       at System.Windows.Threading.Dispatcher.Dispatch(DispatcherPriority priority)
       at System.Windows.Threading.Dispatcher.OnInvoke(Object context)
       at System.Windows.Hosting.CallbackCookie.Invoke(Object[] args)
       at System.Windows.Hosting.DelegateWrapper.InternalInvoke(Object[] args)
       at System.Windows.RuntimeHost.ManagedHost.InvokeDelegate(IntPtr pHandle, Int32 nParamCount, ScriptParam[] pParams, ScriptParam& pResult)