2013-03-19 25 views
0

不知道這是一個錯誤,但: 當你擴展型與觀察的同時,還連載中的SaveChanges 。這使得EFContextProvider在刪除實體時失敗。 JSON的1.2.1映射的性質不應該被序列化

實施例發送:

{"entities": [{ 
    "Id":1015, 
    "Key":"3", 
    "Value":"2", 
    "undefined":"", 
    "entityAspect":{ 
     "entityTypeName":"Setting:#Settings_Beeze.Models", 
     "entityState":"Deleted", 
     "originalValuesMap":{"isBeingEdited":false}, 
     "autoGeneratedKey":{ 
      "propertyName":"Id", 
      "autoGeneratedKeyType":"Identity"}}}], 
"saveOptions":{ 
    "allowConcurrentSaves":false}} 

isBeingEdited - 是客戶端觀察到的,並且不應當被髮送到服務器(我想是這樣)。 它也產生字段undefined(這不是擴展對象的一部分,它來自無處)。

所以服務器端代碼中EFContextProvider失敗的NullReferenceException,這裏是堆棧跟蹤:

at Breeze.WebApi.EFContextProvider`1.SetPropertyValue(Object entity, String propertyName, Object value) 
at Breeze.WebApi.EFContextProvider`1.<>c__DisplayClassd.<RestoreOriginal>b__c(KeyValuePair`2 kvp) 
at System.Collections.Generic.List`1.ForEach(Action`1 action) 
at Breeze.WebApi.EFContextProvider`1.RestoreOriginal(EntityInfo entityInfo) 
at Breeze.WebApi.EFContextProvider`1.<ProcessAllDeleted>b__6(EFEntityInfo entityInfo) 
at System.Collections.Generic.List`1.ForEach(Action`1 action) 
at Breeze.WebApi.EFContextProvider`1.ProcessAllDeleted(List`1 deletedEntities) 
at Breeze.WebApi.EFContextProvider`1.SaveChangesCore(Dictionary`2 saveMap) 
at Breeze.WebApi.ContextProvider.SaveChanges(JObject saveBundle) 
at Settings_Beeze.Controllers.DataController.SaveChanges(JObject saveBundle) in s:\Projects\Else\Settings Beeze\Settings Beeze\Controllers\DataController.cs:line 35 
at lambda_method(Closure , Object , Object[]) 
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass13.<GetExecutor>b__c(Object instance, Object[] methodParameters) 
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) 
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.<>c__DisplayClass5.<ExecuteAsync>b__4() 
at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken) 

至於修復的想法:unwrapOriginalValues應檢查屬性是否是未映射,並繼續到下一個而不是寫給答案。

  • 移動問題從GitHub到SO
+0

請記住,堆棧溢出不是問題跟蹤器。 – 2013-03-19 21:04:50

+2

Andrew,這個問題發佈在Breeze GitHub網站上。我認爲這對Breeze Stack Overflow社區是有用的,我在這裏轉貼了這個問題(和可能的修正)。 – John 2013-03-19 22:53:41

回答

1

聽起來好像是我的錯誤。我們將跳過它。