2010-05-04 7 views
1

Je suis nouveau à Silverlight et donc l'accès aux données en Silverlight donc porter avec moi. J'ai un modèle de données d'entité ADO.Net référençant une base de données sql server 2008. La table causant des problèmes est appelée transaction. La table de transaction a un champ non nullable "MerchantChain". Cette table est remplie par un autre programme qui insère des chaînes vides dans le champ merchantchain lorsqu'une chaîne marchande n'est pas fournie. Donc, dans mon application Silverlight, je charge une grille avec des transactions basées sur des critères fournis par l'utilisateur. La grille est pour l'affichage seulement, mais je dois pouvoir mettre à jour le statut d'une transaction après qu'un utilisateur l'ait vu. J'ai donc défini le champ transaction.status et tenté une modification de soumission. Avant les échanges, la transaction.HasValidationErrors est fausse. Dès que la commande submitchanges est exécutée (dans le débogueur), HasValidationErrors a la valeur true et la commande submit renvoie une exception non gérée. L'erreur ValidationError est que le champ merchantchain est requis. Eh bien, c'est une chaîne vide - ce n'est pas nul. Aucune idée de quoi faire. C'est le studio visuel 2010, silverlight 4, vb.net.Silverlight RIA Services SubmitChanges Validation Erreur

+0

Ouch mon sympathique. Une conception qui rend un champ non-nullable mais considère une chaîne vide dans un tel champ comme une valeur acceptable et attendue demande des problèmes. – AnthonyWJones

+0

@AnthonyWJones Les chaînes vides ne sont pas identiques aux chaînes nullables. Considérez la requête: SELECT * WHERE SomeString! = 'Foo', si SomeString n'est pas nullable, le jeu de résultats contiendra les valeurs de chaîne vides, si elle est nullable, ces lignes nulles seront manquantes. La chaîne vide est 'une chaîne de longueur 0', NULL est 'pas de chaîne, pas de longueur, pas de rien' – Sprague

+1

@Eugarps: Umm .. ok merci pour ça. – AnthonyWJones

Répondre

1

[Obligatoire (AllowEmptyString = true)]

Vous devez faire la chaîne vide autorisée. Aller à votre classe de copain et ajouter ceci. Plus de détails peuvent être trouvés ici:

http://forums.silverlight.net/forums/p/176631/398676.aspx

+0

Merci - a travaillé comme un champion! Pour les VBers, c'est le fichier [DomainServiceName] .metadata.vb. Et la syntaxe est Bob

+0

C'est juste moi ou MS aurait pu faire beaucoup mieux ici? –

+0

Je ne suis pas très sûr de ce que vous voulez dire. Je suppose que vous voulez dire ne pas exiger le AllowEmptyString. La validation est appliquée en fonction de l'attribut RequiredAttribute. S'il y avait un champ obligatoire lié à une zone de texte, je voudrais que ma validation oblige l'utilisateur à entrer du texte sauf si je l'ai spécifiquement autorisé. La partie difficile est que RIA déduit ces attributs de la base de données. Ainsi, le concepteur db a marqué un champ de type chaîne de caractères 'non null', donc par défaut, RIA suppose également 'chaîne non vide'. L'idée derrière cela étant, si je vois [Obligatoire] je m'attends à ce que l'utilisateur doive entrer quelque chose. – JosephC

Questions connexes