2011-03-15 2 views
0

Ceci est mon code de mon contrôleur:Comment tester si ma requête LINQ est passé par

MGEntities db = new MGEntities(); 
[HttpPost] 
    public ActionResult Register(RegisterModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      // Attempt to register the user 
      MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email); 

      if (createStatus == MembershipCreateStatus.Success) 
      { 

       FormsService.SignIn(model.UserName, false /* createPersistentCookie */); 
       MembershipUser myObject = Membership.GetUser(); 
       Guid UserID = (Guid)myObject.ProviderUserKey; 

       MyProfile profile = new MyProfile(); 
       profile.Address = model.Address; 
       profile.City = model.City; 
       profile.Zip = model.Zip; 
       profile.State = model.State; 
       profile.UserId = UserID; 

       Debug.Write(profile.State); 

       db.aspnet_Profiles.Add(profile); 
       return RedirectToAction("Index", "Home"); 
      } 
      else 
      { 
       ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus)); 
      } 
     } 

Ceci est mon classe MyProfile:

namespace MatchGaming.Models 
{ 
    [Bind(Exclude = "ProfileId")] 
    public class MyProfile 
    { 
     [Key] 
     [ScaffoldColumn(false)] 
     public int ProfileId { get; set; } 

     public Guid UserId { get; set; } 

     [DisplayName("Address")] 
     public string Address { get; set; } 

     [DisplayName("City")] 
     public string City { get; set; } 

     [DisplayName("Zip")] 
    public string Zip { get; set; } 

    [DisplayName("State")] 


    public string State { get; set; } 
} 
} 

Une fois la requête LINQ est exécutée, je vérifie mon base de données et rien n'est ajouté. J'utilise POCO pour mes entités. Voici ma classe:

namespace MatchGaming.Models 
{ 
    public class MGEntities : DbContext 
    { 
     public DbSet<MyProfile> aspnet_Profiles { get; set; } 
    } 
} 

Je ne comprends pas fondamentalement juste pourquoi il est de ne pas ajouter à la base de données, s'il y a une manière que je peux vérifier si la requête a correctement ou non par ou si quelqu'un peut voir le problème. Je vous remercie!

+0

Avez-vous essayé le débogueur? – SLaks

+0

Oui, j'ai débogué et n'a pas eu d'erreurs – anthonypliu

Répondre

0

Essayez

db.aspnet_Profiles.Add(profile); 
db.SaveChanges(); 
+0

J'ai essayé mais cela n'a pas fonctionné :( – anthonypliu

0

Vous abusant EF. Les contextes EF ne sont pas thread-safe et ne peuvent pas être réutilisés dans toutes les demandes.
Vous devez créer un contexte distinct (MGEntities) pour chaque requête, en le créant dans le contrôleur dans une instruction using.

Vous devez également appeler SaveChanges().

+0

pouvez-vous me donner un exemple de code de ceci? – anthonypliu

+0

@anthin: 'using (var db = new MGEntities()) {...} ' – SLaks

+0

J'ai essayé cela, toujours pas de chance de ne pas insérer dans la base de données et ne me donne aucune erreur Peut-être que je ne suis pas connecté correctement à ma base de données? – anthonypliu

Questions connexes