Est-il possible d'utiliser la nouvelle identité Asp.net avec Database First et EDMX? Ou seulement avec le code d'abord?
Voici ce que j'ai fait:
1) J'ai créé un nouveau projet MVC5 et j'ai demandé à la nouvelle identité de créer les nouvelles tables User et Roles dans ma base de données.
2) J'ai ensuite ouvert mon fichier Database First EDMX et l'ai glissé dans la nouvelle table Identity Users puisque j'ai d'autres tables qui s'y rapportent.
3) Lors de la sauvegarde de l'EDMX, le générateur Database First POCO créera automatiquement une classe User. Cependant, UserManager et RoleManager s'attendent à ce qu'une classe User hérite du nouvel espace de noms Identity (Microsoft.AspNet.Identity.IUser), donc l'utilisation de la classe POCO User ne fonctionnera pas.
Je suppose qu'une solution possible est de modifier mes classes de génération POCO pour que ma classe utilisateur hérite d'IUser?
Ou est ASP.NET Identity uniquement compatible avec Code First Design?
++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++
Mise à jour: Suite à la suggestion d'Anders Abel ci-dessous, c'est ce que j'ai fait. Cela fonctionne, mais je me demande s'il existe une solution plus élégante.
1) J'ai étendu ma classe User d'entité en créant une classe partielle dans le même espace de noms que mes entités générées automatiquement.
namespace MVC5.DBFirst.Entity
{
public partial class AspNetUser : IdentityUser
{
}
}
2) J'ai changé mon DataContext pour hériter d'IdentityDBContext au lieu de DBContext. Notez que chaque fois que vous mettez à jour votre EDMX et régénérez les classes DBContext et Entity, vous devrez le redéfinir.
public partial class MVC5Test_DBEntities : IdentityDbContext<AspNetUser> //DbContext
3) Dans votre classe d'entité User générée automatiquement, vous devez ajouter le mot-clé override aux 4 champs suivants ou commenter ces champs car ils sont hérités d'IdentityUser (étape 1). Notez que chaque fois que vous mettez à jour votre EDMX et régénérez les classes DBContext et Entity, vous devrez le redéfinir.
override public string Id { get; set; }
override public string UserName { get; set; }
override public string PasswordHash { get; set; }
override public string SecurityStamp { get; set; }