2009-09-27 15 views
0

Je suis en train de définir un identifiant unique dans ma table de la part du identifiant unique de ma table d'adhésion (adhésion à asp.net).mise UniqueIdentifier de Guid dans LINQ, nulle exception de référence

Cependant, j'obtiens une exception de référence nulle en procédant ainsi. C'est le code.

Customer customer = db.Customers.SingleOrDefault(c => c.Id == Convert.ToInt32(formValues["CustomerId"])); 
Guid userId = new Guid(user.ProviderUserKey.ToString()); 
customer.UserId = userId; 

Il se bloque sur la dernière ligne.

J'ai essayé différents réglages dans ma table client sur la base de données et dans le modèle SQL LINQ pour mais je continue à recevoir cela.

Quelqu'un sait pourquoi?

Merci

Répondre

2

Vous voyez cela parce que cette expression:

db.Customers.SingleOrDefault(
    c => c.Id == Convert.ToInt32(formValues["CustomerId"])); 

est de retour null et que null est attribuée à la variable customer. Lorsque vous utilisez customer deux lignes plus tard, il lance le NullReferenceException.

La meilleure chose à faire ici est de déboguer ce code et voir ce que formValues["CustomerId"] est réglé sur - très probablement cette valeur est pas ensemble qui est en vous faisant de rechercher un client dans la base de données pour une CustomerId qui n » t existe.

+0

+1 yup - principe de base de la programmation défensive: si quelque chose peut retourner NULL (et .SingleOrDefault() peut certainement!), Vous devez ** TOUJOURS ** vérifier NULL! –

+0

Je me sens idiot :(J'ai eu l'identification du client comme un champ caché mais ce n'était pas dans la forme de début en utilisant le bloc. – ddd

Questions connexes