IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entity Framework Discussion :

Requête linq échouée [Débutant]


Sujet :

Entity Framework

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2010
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 221
    Points : 61
    Points
    61
    Par défaut Requête linq échouée
    Bonjour;
    Je travaille avec asp mvc et entityframework, j'ai un formulaire d'authentification qui contient l'adresse e-mail de l’utilisateur, j'aimerai que cette adresse soit unique, pour cela a chaque inscription d'un nouveau utilisateur je vérifié si son adresse email n'existe pas dans ma base de données, MAIS j'ai un problème avec la requête, quand l'adresse existe ça marche j'ai un message qui indique que cette adresse existe dèja, dans le cas ou l'adresse est inexistante dans ma BD la requete me renvoie une erreur de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    La référence d'objet n'est pas définie à une instance d'un objet.
     
    Ligne 90 :             string testmail="";
    Ligne 91 :             
    Ligne 92 :                  testmail = UsersContext.Users.Where(m => m.Email == model.Email).SingleOrDefault().Email;
    Ligne 93 :             
    Ligne 94 :             if (ModelState.IsValid)
    [NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.]
    voici mon bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    [HttpPost]
            [AllowAnonymous]
            [ValidateAntiForgeryToken]
            public async Task<ActionResult> Register(RegisterViewModel model)
            {
                string testmail="";
     
                     testmail = UsersContext.Users.Where(m => m.Email == model.Email).SingleOrDefault().Email;
     
                if (ModelState.IsValid)
                {
     
     
                    if (!model.Email.Equals(testmail) )
                    {
                        var user = new ApplicationUser() { UserName = model.UserName };
                        user.Email = model.Email;
                        user.ConfirmedEmail = false;
                        var result = await UserManager.CreateAsync(user, model.Password);
                        if (result.Succeeded)
                        {
                            System.Net.Mail.MailMessage m = new System.Net.Mail.MailMessage(
                                new System.Net.Mail.MailAddress("intervalle.technologies@gmail.com", "Gestion des utilisateur "),
                                new System.Net.Mail.MailAddress(user.Email));
                            m.Subject = "Comfirmation d'inscription";
                            m.Body = string.Format("Cher {0}<BR/>Merci pour votre inscription, veuillez cliquez sur le lien pour terminer votre inscription : <a href=\"{1}\" title=\"User Email Confirm\">{1}</a>", user.UserName, Url.Action("ConfirmEmail", "Account", new { Token = user.Id, Email = user.Email }, Request.Url.Scheme));
                            m.IsBodyHtml = true;
                            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.gmail.com");
                            smtp.Credentials = new System.Net.NetworkCredential("intervalle.technologies@gmail.com", "intervalletechnologies");
                            smtp.EnableSsl = true;
                            smtp.Send(m);
                            return RedirectToAction("Confirm", "Account", new { Email = user.Email });
                        }
                        else
                        {
                            AddErrors(result);
                        }
                    }
     
                    else
                        Response.Write("email existe deja");
                }
     
                // If we got this far, something failed, redisplay form
                return View(model);
            }

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    Tu as une erreur car tu demande la propriété "Email" de l'entité "User" alors que "User" est "null".

    Au passage tu peux simplifier ta requête Linq :
    - Pas besoin du Where SingleOrDefault peut prendre un prédicate comme paramètre
    - Tu peux utiliser Any qui te renvoi un boolean

    Enumerable méthodes
    Exemple Linq


    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
            static void Main()
            {
                //Timer();
                var tests = new List<Test>
                {
                    new Test { Nom="Nom1", Email="email1@email.com"},
                    new Test { Nom="Nom2", Email="email2@email.com"},
                    new Test { Nom="Nom3", Email="email3@email.com"},
                    new Test { Nom="Nom4", Email="email4@email.com"}
                };
     
                //Erreur : La référence d'objet n'est pas définie à une instance d'un objet
                //var email = tests.SingleOrDefault(t => t.Email == "emai@email.com").Email;
     
                bool testEmail = tests.Any(t => t.Email == "emai@email.com");
            }
        public class Test
        {
            public string Nom { get; set; }
            public string Email { get; set; }
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête linq jointure
    Par oyigit dans le forum Linq
    Réponses: 5
    Dernier message: 18/03/2010, 16h02
  2. Colle sur un tri dans une requête linq to sql
    Par boby62423 dans le forum Linq
    Réponses: 5
    Dernier message: 18/03/2009, 10h01
  3. [MySQL] Requête qui échoue
    Par DarkOsiris dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/05/2008, 21h38
  4. Réponses: 7
    Dernier message: 10/02/2008, 11h56
  5. [Tableaux] Requête qui échoue pour rien
    Par baleiney dans le forum Langage
    Réponses: 3
    Dernier message: 05/02/2007, 00h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo