2014-01-05 4 views
0

Использование breeze.webapi.nh (1.4.7) У меня есть простой запрос TPT/TPH (попробованный оба) (BasePayment, CreditcardPayment) на объекте CredticardPayment, который работает отлично, и я получаю данные из базового и производного классов.Breeze NH - FK на базовом классе save error

При попытке сохранить сущность и базовый класс содержит FK я получаю эту ошибку: (если FK перемещаются в производном классе сохранения работы и все отлично)

The given key was not present in the dictionary. 
    at System.Collections.Generic.Dictionary`2.get_Item(TKey key) 
    at Breeze.WebApi.NH.NHRelationshipFixer.GetRelatedEntity(String propName, IType propType, EntityInfo entityInfo, IClassMetadata meta, Boolean canUseSession) 
    at Breeze.WebApi.NH.NHRelationshipFixer.FixupRelationship(String propName, IType propType, EntityInfo entityInfo, IClassMetadata meta, Boolean canUseSession) 
    at Breeze.WebApi.NH.NHRelationshipFixer.FixupRelationships(EntityInfo entityInfo, IClassMetadata meta, Boolean canUseSession) 
    at Breeze.WebApi.NH.NHRelationshipFixer.FixupRelationships(Boolean canUseSession) 
    at Breeze.WebApi.NH.NHContext.ProcessSaves(Dictionary`2 saveMap) 
    at Breeze.WebApi.NH.NHContext.SaveChangesCore(SaveWorkState saveWorkState) 
    at Breeze.WebApi.ContextProvider.OpenAndSave(SaveWorkState saveWorkState) 
    at Breeze.WebApi.ContextProvider.SaveChanges(JObject saveBundle, TransactionSettings transactionSettings) 
    at YTourWeb.Controllers.BreezeApiController.SaveChanges(JObject saveBundle) in c:\Yayasoft\YTour\YTour\YTourWeb\Controllers\BreezeApiController.cs:line 46 

Есть идеи?

сохранить пачке:

{ 
    "entities": [ 
    { 
     "Id": 5, 
     "TotalAmount": 20, 
     "CurrencyId": 1, 
     "CurrencyRate": 3.5, 
     "CreateDate": "2014-01-05T09:54:51Z", 
     "PaymentDate": null, 
     "OrderId": 316, 
     "NumberOfPayments": 0, 
     "Token": null, 
     "ConfirmationCode": null, 
     "HolderFirstName": null, 
     "HolderLastName": null, 
     "HolderIdNumber": null, 
     "LastFourDigits": null, 
     "ExpireDate": null, 
     "Remarks": null, 
     "CardType": "Visa", 
     "PaymentType": "Regular", 
     "Status": "None", 
     "ErrorCode": 0, 
     "ChargeDate": null, 
     "CVV": null, 
     "ClearingService": "NotSet", 
     "entityAspect": { 
     "entityTypeName": "CreditcardPayment:#BL.Orders", 
     "defaultResourceName": "CreditcardPayments", 
     "entityState": "Modified", 
     "originalValuesMap": { 
      "TotalAmount": 10 
     }, 
     "autoGeneratedKey": { 
      "propertyName": "Id", 
      "autoGeneratedKeyType": "Identity" 
     } 
     } 
    } 
    ], 
    "saveOptions": {} 
} 

метаданные:

{ 
     "shortName": "CreditcardPayment", 
     "namespace": "BL.Orders", 
     "baseTypeName": "BasePayment:#BL.Orders", 
     "autoGeneratedKeyType": "Identity", 
     "defaultResourceName": "CreditcardPayments", 
     "dataProperties": [ 
     { 
      "nameOnServer": "NumberOfPayments", 
      "dataType": "Int32", 
      "isNullable": true, 
      "validators": [ 
      { 
       "name": "int32" 
      } 
      ] 
     }, 
     { 
      "nameOnServer": "Token", 
      "dataType": "String", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "ConfirmationCode", 
      "dataType": "String", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "HolderFirstName", 
      "dataType": "String", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "HolderLastName", 
      "dataType": "String", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "HolderIdNumber", 
      "dataType": "String", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "LastFourDigits", 
      "dataType": "String", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "ExpireDate", 
      "dataType": "DateTime", 
      "isNullable": true, 
      "validators": [ 
      { 
       "name": "date" 
      } 
      ] 
     }, 
     { 
      "nameOnServer": "Remarks", 
      "dataType": "String", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "CardType", 
      "dataType": "NHibernate.Type.EnumType`1[[BL.Orders.CreditcardPayment+CreditCardTypes, BL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], NHibernate", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "PaymentType", 
      "dataType": "NHibernate.Type.EnumType`1[[BL.Orders.CreditcardPayment+CreditCardPaymentTypes, BL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], NHibernate", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "Status", 
      "dataType": "NHibernate.Type.EnumType`1[[BL.Orders.CreditcardPayment+CreditCardStatus, BL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], NHibernate", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "ErrorCode", 
      "dataType": "Int32", 
      "isNullable": true, 
      "validators": [ 
      { 
       "name": "int32" 
      } 
      ] 
     }, 
     { 
      "nameOnServer": "ChargeDate", 
      "dataType": "DateTime", 
      "isNullable": true, 
      "validators": [ 
      { 
       "name": "date" 
      } 
      ] 
     }, 
     { 
      "nameOnServer": "CVV", 
      "dataType": "String", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "ClearingService", 
      "dataType": "NHibernate.Type.EnumType`1[[BL.Orders.CreditcardPayment+CreditClearingServices, BL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], NHibernate", 
      "isNullable": true 
     } 
     ], 
     "navigationProperties": [] 
    }, 
    { 
     "shortName": "BasePayment", 
     "namespace": "BL.Orders", 
     "autoGeneratedKeyType": "Identity", 
     "defaultResourceName": "BasePayments", 
     "dataProperties": [ 
     { 
      "nameOnServer": "Id", 
      "dataType": "Int32", 
      "isNullable": false, 
      "isPartOfKey": true, 
      "validators": [ 
      { 
       "name": "required" 
      }, 
      { 
       "name": "int32" 
      } 
      ] 
     }, 
     { 
      "nameOnServer": "TotalAmount", 
      "dataType": "Double", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "CurrencyId", 
      "dataType": "Int32", 
      "isNullable": true, 
      "validators": [ 
      { 
       "name": "int32" 
      } 
      ] 
     }, 
     { 
      "nameOnServer": "CurrencyRate", 
      "dataType": "Double", 
      "isNullable": true 
     }, 
     { 
      "nameOnServer": "CreateDate", 
      "dataType": "DateTime", 
      "isNullable": true, 
      "validators": [ 
      { 
       "name": "date" 
      } 
      ] 
     }, 
     { 
      "nameOnServer": "PaymentDate", 
      "dataType": "DateTime", 
      "isNullable": true, 
      "validators": [ 
      { 
       "name": "date" 
      } 
      ] 
     }, 
     { 
      "nameOnServer": "OrderId", 
      "dataType": "Int32", 
      "isNullable": true, 
      "validators": [ 
      { 
       "name": "int32" 
      } 
      ] 
     } 
     ], 
     "navigationProperties": [ 
     { 
      "nameOnServer": "Currency", 
      "entityTypeName": "Currency:#BL", 
      "isScalar": true, 
      "associationName": "AN_BasePayment_Currency", 
      "foreignKeyNamesOnServer": [ 
      "CurrencyId" 
      ] 
     }, 
     { 
      "nameOnServer": "Order", 
      "entityTypeName": "Order:#BL.Orders", 
      "isScalar": true, 
      "associationName": "AN_BasePayment_Order", 
      "foreignKeyNamesOnServer": [ 
      "OrderId" 
      ] 
     } 
     ] 

ответ

1

Да, это ошибка. Извини за это. Это исправлено в версии 1.4.8, которая должна быть выпущена завтра.

+0

спасибо, я также знаю после некоторого исследования, в чем была проблема, и я применил исправление для него (пришлось перестроить). я задаюсь вопросом, будет ли мое исправление таким же, как исправление, которое вы примените в 1.4.8 – user2968607

Смежные вопросы