Breeze .NET Server代码抛出Int32Converter异常

时间:2014-06-13 22:12:50

标签: breeze

在我对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

1 个答案:

答案 0 :(得分:0)

很好听。截至2014年6月16日,这已在breeze.server.net GitHub回购中修复,也将成为下一个完整的breezeJs版本的一部分,希望在本周晚些时候发布。我将在新的nuget包中发布回来。