2015-02-01 12 views
5

Sto lavorando ad un nuovo progetto in ASP.NET MVC 5 con Entity Framework 6 Codice First.In ASP.NET MVC, spostare modelli di autenticazione a una libreria di classi

STATO ATTUALE

ho due progetti all'interno di una soluzione. Uno è il front-end (MVC) e l'altro è una libreria di classi che spero possa ospitare tutte le mie classi Model (non ViewModels).

Come tutti sappiamo, quando si avvia un nuovo progetto MVC, i modelli di identità si trovano nella cartella [Modelli]. Dato che questi logicamente appartengono al mio progetto di libreria di classi, mi piacerebbe trasferirli lì.

solution explorer

quello che ho cercato

All'interno della [Autenticazione] cartella Sono andato avanti e ha creato una classe ApplicationUser.cs. Ora semplicemente guardando IdentityModels.cs so che avrei bisogno di fare riferimento allo Microsoft.AspNet.Identity tra le altre cose.

Quindi, fare clic con il pulsante destro del mouse sul Riferimento per il progetto BB.DOMAIN e fare clic su {Aggiungi riferimento}. Ma non riesco a vedere la libreria Microsoft.AspNet.Identity da nessuna parte!

adding references

chiarimenti richiesti

sto facendo la cosa giusta qui? Il mio pensiero attuale è che sto facendo qualcosa che normalmente non dovresti fare! Ma poi ovunque tu legga, ti viene detto che tutte le tue entità centrali dovrebbero generalmente sedersi in un posto.

Un'altra cosa che mi sono confuso circa già, ma non ho avuto modo è questo:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false) 
    { 
    } 

    public static ApplicationDbContext Create() 
    { 
     return new ApplicationDbContext(); 
    } 
} 

Quando arrivo di aggiungere ApplicationDbContext.cs alla mia cartella [Autenticazione] in BB.DOMAIN. Per fare in modo che tutto si trovi nello stesso database, devo semplicemente cambiare base("DefaultConnection") in qualunque sia il nome della mia stringa di connessione nell'altra mia classe DbContext che si trova all'interno della cartella [Context]?

Voglio che tutte le mie entità guidino questa applicazione in un unico database.

risposta

4

La super classe IdentityUser utilizzata nel file IdentityModel proveniva dal pacchetto Microsoft ASP.NET Identity EntityFramework, non parte di .Net Framework 4.5.

È necessario aggiungere questo pacchetto nuget e le dipendenze al progetto BB.DOMAIN.

+0

Grazie SilverFox. Pensandoci, devo aggiungere 'ApplicationDbContext' se ho già un' BBContext' di mio? Perché avrei bisogno di 2 contesti? O è un must per l'autenticazione? – Ciwan

+1

Bene, 'ApplicationDbContext' è stato utilizzato da' ApplicationUserManager' per memorizzare i dati dell'utente. Se vuoi unirlo a 'BBContext', assicurati di cambiare tutti gli usi in' BBContext'. – silverfox

+0

grazie, o posso tenerlo e basta dire di usare la stessa stringa di connessione del mio altro contesto giusto? – Ciwan