【问题标题】:Deleting an entity with a modified enum property with Breeze使用 Breeze 删除具有修改的枚举属性的实体
【发布时间】:2014-06-20 23:39:12
【问题描述】:

我在尝试删除也具有修改的枚举属性的实体时遇到问题。我得到的错误是从“System.String”到“BV.Entities.CarType”的无效转换。一个简单的例子如下:

public class Car {
  public int Id { get; set; }
  public CarType Type { get; set; } // CarType is an enum
}

var car = // load a car entity
car.Type('Sedan');
car.entityAspect.setDeleted();
manager.saveChanges();

这可能发生,例如,当用户开始编辑记录,但随后决定删除它。

我还使用 DocCode 示例对此进行了测试。我编辑了 saveTodoTests.js 并使用了“可以在一批中保存添加、更新和删除”测试,类似于这里 Exception in client breeze.js when using enum property on model 的建议。如果我更改 deleteTodo 项目的枚举类型,则会引发错误,如果我删除 setDeleted(),它将正确保存。

System.InvalidCastException was unhandled by user code
  HResult=-2147467262
  Message=Invalid cast from 'System.String' to 'BV.Entities.CarType'.
  Source=mscorlib
  StackTrace:
       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 Breeze.ContextProvider.EF6.EFContextProvider`1.ConvertValue(Object val, Type toType)
       at Breeze.ContextProvider.EF6.EFContextProvider`1.SetPropertyValue(Object entity, String propertyName, Object value)
       at Breeze.ContextProvider.EF6.EFContextProvider`1.<>c__DisplayClass10.<RestoreOriginal>b__f(KeyValuePair`2 kvp)
       at System.Collections.Generic.List`1.ForEach(Action`1 action)
       at Breeze.ContextProvider.EF6.EFContextProvider`1.RestoreOriginal(EntityInfo entityInfo)
       at Breeze.ContextProvider.EF6.EFContextProvider`1.<ProcessAllDeleted>b__9(EFEntityInfo entityInfo)
       at System.Collections.Generic.List`1.ForEach(Action`1 action)
       at Breeze.ContextProvider.EF6.EFContextProvider`1.ProcessAllDeleted(List`1 deletedEntities)
       at Breeze.ContextProvider.EF6.EFContextProvider`1.SaveChangesCore(SaveWorkState saveWorkState)
       at Breeze.ContextProvider.ContextProvider.OpenAndSave(SaveWorkState saveWorkState)
       at Breeze.ContextProvider.ContextProvider.SaveChanges(JObject saveBundle, TransactionSettings transactionSettings)
       at BV.Web.Controllers.DefaultController.SaveChanges(JObject saveBundle) in c:\Work\Code\BV\BV.Web\Controllers\DefaultController.cs:line 59

【问题讨论】:

    标签: breeze


    【解决方案1】:

    好的,这是一个错误,已在 GitHub 上的当前轻风.server.net 和轻风.js 存储库的组合中得到修复。它也将在下周某个时候作为下一个版本 (1.4.14) 的一部分发布。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多