在我对JavaScript客户端代码进行了一些代码更改后,我开始看到以下错误。我见过其他人也报告过,但没有看到任何人能够缩小条件。
Int32Converter cannot convert from System.Int64.
在深入研究问题后,它似乎是Breeze .NET服务器代码中的一个错误。此处的部分异常堆栈跟踪显示了错误源自的位置:
at Breeze.ContextProvider.EF6.EFContextProvider`1.ConvertValue(Object val, Type toType) in EFContextProvider.cs:line 603
at Breeze.ContextProvider.EF6.EFContextProvider`1.SetPropertyValue(Object entity, String propertyName, Object value) in EFContextProvider.cs:line 573
at Breeze.ContextProvider.EF6.EFContextProvider`1.<>c__DisplayClass10.<RestoreOriginal>b__f(KeyValuePair`2 kvp) in EFContextProvider.cs:line 468
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at Breeze.ContextProvider.EF6.EFContextProvider`1.RestoreOriginal(EntityInfo entityInfo) in EFContextProvider.cs:line 466
at Breeze.ContextProvider.EF6.EFContextProvider`1.<ProcessAllDeleted>b__9(EFEntityInfo entityInfo) in EFContextProvider.cs:line 337
at System.Collections.Generic.List`1.ForEach(Action`1 action)
at Breeze.ContextProvider.EF6.EFContextProvider`1.ProcessAllDeleted(List`1 deletedEntities) in EFContextProvider.cs:line 334
at Breeze.ContextProvider.EF6.EFContextProvider`1.SaveChangesCore(SaveWorkState saveWorkState) in EFContextProvider.cs:line 219
at Breeze.ContextProvider.ContextProvider.OpenAndSave(SaveWorkState saveWorkState)
at Breeze.ContextProvider.ContextProvider.SaveChanges(JObject saveBundle, TransactionSettings transactionSettings)
正在发生的事情是调用EFContextProvider<>.ConvertValue()
,第一个参数为long
,第二个参数为Type
的{{1}}。从那里,检索到的int?
无法转换它并抛出上述异常。
我能够通过下载DocCode并编写以下测试来重现错误:
TypeConverter
答案 0 :(得分:0)
很好听。截至2014年6月16日,这已在breeze.server.net GitHub回购中修复,也将成为下一个完整的breezeJs版本的一部分,希望在本周晚些时候发布。我将在新的nuget包中发布回来。