Essayer de changer les noms de table dans ASP.NET Identité 2.0
J'ai envie de changer les noms des tables utilisées par ASP.NET Identité 2.0. J'ai vu plusieurs des questions similaires, mais rien de ce qui résout mon problème. Par exemple, ce type de solution:
http://www.goatly.net/customizing-table-names-for-identitydbcontextwithcustomuser-data-contexts
semble dépendre sur le Premier Code(?). En tout cas, la mise en œuvre de OnModelCreating ne fait rien pour moi. J'ai essentiellement renommé le AspNetUsers et tableaux similaire à mon nom propre, et que vous voulez être en mesure de les utiliser. J'ai déjà un contexte EF (MyContext) que je veux utiliser, alors je l'ai modifié pour en tirer IdentityDbContext (modification du modèle t4), puis dans Démarrage.Auth j'ai:
UserManagerFactory = () =>
{
var context = new MyContext();
Database.SetInitializer<MyContext>(new IdentityDbInitializer());
var userStore = new UserStore<IdentityUser>(context){
DisposeContext = true
};
return new UserManager<IdentityUser>(userStore);
};
Mais le problème survient lorsque j'essaie de me connecter que j'ai "impossible de contacter le serveur". J'imagine que c'est parce que mon UserStore a aucun moyen de savoir qui sont les tables de l'Utilisateur sur mon contexte. Je l'avais espéré c'est ce que le OnModelCreating code, mais je suis floue sur ce point. J'imagine UserStore est toujours à la recherche d'un "AspNetUsers" table, bien que je ne sais pas d'où ces noms viennent de. Je suis aussi mal à l'aise sur la modification du modèle t4 pour mon contexte - est-ce la façon dont je suis censé trouver dans IdentityDbContext?
Toute aide grandement appréciée.
plus nette de toute suggestion concernant ma question stackoverflow.com/questions/36929767/...
OriginalL'auteur see sharper | 2014-07-15
Vous devez vous connecter pour publier un commentaire.
Quelques étapes à suivre:
Microsoft.AspNet.Identity.EntityFramework
connection string
à votre site web.config/app.configMaintenant, vous devez définir votre personnalisé
Database Context
:Comme vous pouvez le voir, j'ai utilisé
DbModelBuilder
à la carte toutes les entités d'un nouveau tables de.Enable-Migrations
Il va créer un dossier
Migrations
avec le fichier de configurationConfiguration.cs
.Il devrait ressembler à quelque chose comme ceci:
Dans le constructeur de modifier la propriété
AutomaticMigrationsEnabled
àtrue
.Update-Database
Il faut exécuter le script de création de nouvelles tables.
Vous pouvez personnaliser votre entités (Ids) de créer une classe pour chaque interface définie.
Depuis que vous utilisez Owin vous pouvez définir votre UserStore:
et votre UserManager mise en œuvre:
Et votre
Owin.Startup
devrait ressembler à quelque chose comme ceci:Si vous voulez avoir un coup d'oeil à une implémentation personnalisée vous pouvez consulter mon GitHub avec une simple solution de travail sur ASP.NET MVC.
Mise à JOUR:
Il y a un autre projet dans cette solution avec un minimum d'installation; fondamentalement, vous devez définir votre contexte (IdentityDbContext) si vous ne souhaitez renommer vos tables.
Le projet peut être trouvé ici.
J'ai mis à jour ma réponse. Vérifier le lien dans mon dépôt github.
Merci beaucoup @LeftyX - il semble cependant que l'Identité 2 EF assume le Premier Code, nous n'utilisons pas. Par conséquent, j'ai dû adopter une autre solution.
tout fonctionne comme prévu, mais je reçois le vieux AspNetUsers avec une colonne (Id) chaque fois que je fais une mise à Jour de la Base de données
essayez de supprimer toutes les tables
EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"
et exécuterUpdate-Database
de nouveau.OriginalL'auteur LeftyX
Identité 2 avec Entity Framework, assume le Premier Code. Ce projet semble faire ce dont j'ai besoin:
https://github.com/cbfrank/AspNet.Identity.EntityFramework
OriginalL'auteur see sharper