1 - È necessario abilitare le migrazioni, prefereably con EntityFramework 5
2 - Sposta il tuo
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "EmailAddress", autoCreateTables: true);
al tuo metodo di Seed nella classe YourMvcApp/Migrazioni/Configuration.cs
protected override void Seed(UsersContext context)
{
WebSecurity.InitializeDatabaseConnection(
"DefaultConnection",
"UserProfile",
"UserId",
"UserName", autoCreateTables: true);
if (!Roles.RoleExists("Administrator"))
Roles.CreateRole("Administrator");
if (!WebSecurity.UserExists("lelong37"))
WebSecurity.CreateUserAndAccount(
"lelong37",
"password",
new {Mobile = "+19725000000", IsSmsVerified = false});
if (!Roles.GetRolesForUser("lelong37").Contains("Administrator"))
Roles.AddUsersToRoles(new[] {"lelong37"}, new[] {"Administrator"});
}
Ora EF5 si occuperà della creazione della tua tabella UserProfile, dopodiché chiamerai WebSecurity.InitializeDatabaseConnection per registrare solo SimpleMembershi pProvider con la tabella UserProfile già creata, anche per diramare SimpleMembershipProvider quale colonna è UserId e UserName. Sto anche mostrando un esempio di come è possibile aggiungere Utenti, Ruoli e associare i due al metodo Seed con proprietà/campi UserProfile personalizzati ad es. Mobile dell'utente (numero) e IsSmsVerified.
3 - Ora, quando si esegue update-database dal Console Package Manager, EF5 sarà disposizione la vostra tavola con tutte le vostre proprietà personalizzate
Per ulteriori riferimenti si prega di fare riferimento a questo articolo con codice sorgente: http://blog.longle.net/2012/09/25/seeding-users-and-roles-with-mvc4-simplemembershipprovider-simpleroleprovider-ef5-codefirst-and-custom-user-properties/
hmmm ... ho percepito un certo odore di codice serio qui ... stai combinando codice di accesso DB con codice web. Raccomando vivamente di refactoring TUTTI i riferimenti di strutture di entità in un progetto di accesso ai dati isolato, quindi utilizzando il modello di repository per consentire ai chiamanti di recuperare i dati per l'app. –
Con questo modello, come si assicura che le modifiche al profilo vengano riscritte nel database? –
Vorrei trasmettere ciò che è nella sessione a UserProfile piuttosto che usare la parola chiave 'as'. Se accidentalmente inserisci un altro tipo, il tuo getter restituirà * null *. È meglio fallire immediatamente di provare e diagnosticare problemi a valle causati da un profilo utente nullo. –