La base de données tente d'insérer des valeurs NULL lorsqu'une requête POST est envoyée au service Web via RestKit

StackOverflow https://stackoverflow.com//questions/20005388

Question

Lorsque je fais une requête POST à ​​mon webservice, l'erreur suivante est générée :

TinyTds :: Erreur :Impossible d'insérer la valeur NULL dans la colonne «Bankcd», table «SlotsMasterData.master.bank»;la colonne n’autorise pas les valeurs nulles.

La console du serveur affiche les éléments suivants :

enter image description here

D'après ce qui précède, vous pouvez voir que des valeurs existent pour tous les attributs de mon objet Bank, mais tout à coup, la référence à chacun est NULL lorsque 'SELECT CAST(SCOPE IDENTITY()...' est effectuée.

Voici le code de mon application :

    RKObjectManager *objectManager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:basePathToWebService]];

    RKObjectMapping *bankMapping = [RKObjectMapping mappingForClass:[Banks class]];

    NSDictionary *attributeMappingDictionary = [NSDictionary dictionaryWithObjectsAndKeys:
                                                @"BankID", @"bankID",
                                                @"BankCD", @"bankCD",
                                                @"BankName", @"bankName",
                                                @"InsertSourceKey", @"insertSourceKey",
                                                @"UpdateSourceKey", @"updateSourceKey",
                                                @"Active", @"active",
                                                nil];

    [bankMapping addAttributeMappingsFromDictionary:attributeMappingDictionary];

    RKObjectMapping *bankRequestMapping = [RKObjectMapping requestMapping];
    [bankRequestMapping addAttributeMappingsFromDictionary:attributeMappingDictionary];

    RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:bankMapping method:RKRequestMethodAny pathPattern:@"/banks" keyPath:nil statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];

    RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:bankRequestMapping objectClass:[Banks class] rootKeyPath:nil method:RKRequestMethodAny];

    [objectManager addResponseDescriptor:responseDescriptor];
    [objectManager addRequestDescriptor:requestDescriptor];

    [RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"text/plain"];

    //Post
    [objectManager postObject:bank path:@"/banks" parameters:nil success:nil failure:nil];

Pourquoi tente-t-on d'insérer des valeurs NULL ?Comment puis-je réparer ça?Merci pour votre aide!

Était-ce utile?

La solution

bankRequestMapping doit être déclaré comme la cartographie inverse du bankMapping.Dans l'état actuel des choses, les noms des paramètres semblent être dans le mauvais sens.Vous devez utiliser Charles pour vérifier ce que vous envoyez réellement et qu'il correspond à ce que vous attendez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top