0

Je souhaite créer une authentification owin à l'aide de ma propre base de données sql externe au lieu du contexte d'aspe de base. Je peux créer un modèle edmx à partir de la base de données mais je ne sais pas comment l'utiliser pour identifier les utilisateurs.Création d'une authentification à l'aide de own dbcontext

Lorsque je change la connexion de base de données de base utilisée par ApplicationUser à mon propre je reçois cette exception.

Je l'ai déjà créé au moins 30 projets pour tester les solutions que j'ai trouvé sur google, mais aucun d'entre eux était travaillé pour moi.

+0

Je pense que ce n'est pas un problème sql, quelque chose avec le multithread –

+0

Y a-t-il une table ApplicationUser dans votre base de données? Et votre propre DbContext hérite-t-il de IdentityDbContext? – kloarubeek

+3

Merci de vouloir ajouter une réponse. Voulez-vous revenir à votre version antérieure et publier votre réponse en utilisant la boîte de réponse? Merci. – halfer

Répondre

0

[SOLUTION]

La solution est beaucoup plus facile que je thougth ..

Tout ce que je devais faire était héritant ma table d'utilisateur de IdentityUser (AspNetUser est ma propre table)

public partial class AspNetUser : IdentityUser 

et en utilisant mon nom de chaîne de connexion personnalisée (BCTSDb) au lieu de DefaultConnection dans IdentityModels.cs.

public ApplicationDbContext() 
     : base("BCTSDb", throwIfV1Schema: false) 

Ceci est codefirst la base de données, première base de données ne fonctionne pas avec cette solution (je ne sais pas pourquoi).

Ceci a résolu le problème FIRST. Après cela, je ne pouvais pas échafauder des contrôleurs avec des vues à cause de clés manquantes et de références ambiguës.

[WHATTODO]

1. Références ambigües

Dans ma classe AspNetUser.cs je l'ai fait tous ORIGINAL attributs Prioritaire: par exemple UserName:

public override string UserName { get; set; } 

C'est possible que ce n'est pas nécessaire, je n'ai pas essayé sans cela, peut-être olve les références ambiguës entre mon dbcontext et ApplicationDbContext.

2. clés manquantes

Je ne sais pas où je l'ai laissé mes clés, mais il y a la solution:

A la fin de ma fonction OnModelCreating (dans mon dbcontext) je l'ai écrit les lignes suivantes:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     // your table operations, references 
     // ... 

     modelBuilder.Entity<IdentityUserLogin>().HasKey<string>(l => l.UserId); 
     modelBuilder.Entity<IdentityRole>().HasKey<string>(r => r.Id); 
     modelBuilder.Entity<IdentityUserRole>().HasKey(r => new { r.RoleId, r.UserId }); 

     base.OnModelCreating(modelBuilder); 
    } 

Après cela, je pourrais faire tout ce que je veux.