Sono quasi sicuro di aver seguito tutti i passaggi, ma sembra che abbia perso qualcosa. Utilizzo di SimpleMembership nell'app MVC4. Aggiungi email alla tabella UserProfile e nei modelli Register e UserProfile, l'ha aggiunta al metodo Register, ma continua a ricevere l'errore. Ecco il codice:SimpleMembership - Aggiungi email a UserProfile - System.Data.SqlClient.SqlException: nome di colonna non valido Errore "Email"
Modelli:
public class UserProfile
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
}
public class RegisterModel
{
[Display(Name = "Email Address")]
[StringLength(20)]
// [Required]
public string Email { get; set; }
[Display(Name = "Date of Birth")]
// [Required]
public DateTime DOB { get; set; }
[Required]
[System.Web.Mvc.Remote("VerifyUserExists", "Account", ErrorMessage="That Username is already taken.")]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
Controller:
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { Email = model.Email });
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
Io non sto cercando di utilizzare l'indirizzo email per il login, voglio solo prendere durante la fase di registrazione in modo Posso inviare un'e-mail di conferma automatica.
Ho provato con la tabella UserProfile inclusa nel modello EF e con questa, nessuna differenza. Ho confermato che la tabella nel DB ha una colonna Email.
Quello che hai qui sembra buono. Forse hai più di un database di cui non sei a conoscenza (come un file). A che punto dell'esecuzione ricevi l'errore? – Jasen
Errore su questa riga: WebSecurity.CreateUserAndAccount (model.UserName, model.Password, new {Email = model.Email}); La cartella AppData è vuota e le uniche stringhe di connessione passano alla mia istanza localdb in SQL Server 2012, dove è presente il db. Ho cercato il metodo CreateUserAndAccount per scoprire dove sta cercando di salvare, ma non ho trovato nulla finora. – BattlFrog
Quando chiamate 'WebSecurity.InitializeDatabaseConnection', quale stringa di connessione state usando (ed è il database giusto)? –