使用Breeze删除具有修改的枚举属性的实体

使用Breeze删除具有修改的枚举属性的实体,breeze,Breeze,当我试图删除同时具有修改的枚举属性的实体时,我遇到了一个问题。我得到的错误是从“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('Seda

当我试图删除同时具有修改的枚举属性的实体时,我遇到了一个问题。我得到的错误是从“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,并使用了“可以在一个批处理中保存、添加、更新和删除”测试,类似于这里的建议。如果我更改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
用户代码未处理System.InvalidCastException HResult=-2147467262 消息=从“System.String”到“BV.Entities.CarType”的转换无效。 Source=mscorlib 堆栈跟踪: 位于System.Convert.DefaultToType(IConvertible值,类型targetType,IFormatProvider) 位于System.String.System.IConvertible.ToType(类型类型,IFormatProvider提供程序) 位于System.Convert.ChangeType(对象值、类型conversionType、IFormatProvider) 位于Breeze.ContextProvider.EF6.EFContextProvider`1.ConvertValue(对象值,键入toType) 位于Breeze.ContextProvider.EF6.EFContextProvider`1.SetPropertyValue(对象实体、字符串propertyName、对象值) 在Breeze.ContextProvider.EF6.EFContextProvider`1.c_uudisplayClass10.b_uuf(KeyValuePair`2 kvp) at System.Collections.Generic.List`1.ForEach(操作`1操作) 在Breeze.ContextProvider.EF6.EFContextProvider`1.RestoreOriginal(EntityInfo EntityInfo) 在Breeze.ContextProvider.EF6.EFContextProvider`1.b_u9(EFEntityInfo entityInfo) at System.Collections.Generic.List`1.ForEach(操作`1操作) 在Breeze.ContextProvider.EF6.EFContextProvider`1.ProcessAllDeleted(列表`1 deletedEntities) 在Breeze.ContextProvider.EF6.EFContextProvider`1.SaveChangesCore(SaveWorkState SaveWorkState) 在Breeze.ContextProvider.ContextProvider.OpenAndSave(SaveWorkState SaveWorkState) 在Breeze.ContextProvider.ContextProvider.SaveChanges(JObject saveBundle、TransactionSettings TransactionSettings) 在c:\Work\Code\BV\BV.Web\Controllers\DefaultController.cs中的BV.Web.Controllers.DefaultController.SaveChanges(JObject saveBundle)中:第59行
好的,这是一个bug,在当前的breeze.server.net和GitHub上的breeze.js repos的组合中得到修复。它也将在下周某个时候作为下一版本(1.4.14)的一部分发布