Le déplacement ASP.NET modèle d'Identité à la bibliothèque de la classe
Je suis en train de déplacer le modèle d'Identité à une bibliothèque de classe en utilisant les méthodes décrites dans ce lien:
Problème 1: Il semble continuer à utiliser le Site web du projet de chaîne de connexion. J'ai surmonté par spécifier la chaîne de connexion complète dans la bibliothèque de classe. Puis-je faire la IdentityDbContext utiliser la bibliothèque de classe de la chaîne de connexion?
Problème 2: en Raison du problème 1, si je supprime le Cadre de l'Entité à partir du site web du projet. Il donnera l'erreur suivante qu'il est à la recherche d'EF est SqlClient dans le projet de Site web.
Une exception de type 'System.InvalidOperationException' s'est produite dans EntityFramework.dll mais n'a pas été traitée dans le code utilisateur
Informations supplémentaires: Pas de fournisseur Entity Framework trouvé pour le ADO.NET fournisseur de invariante nom de "Système".Les données.SqlClient'. Assurez-vous que le prestataire est inscrit dans le " entityFramework section du fichier de config. Voir http://go.microsoft.com/fwlink/?LinkId=260882 pour plus d'informations.
Autres solutions sont les bienvenus, à condition qu'il omet toute Couche d'Accès aux Données de références comme EF dans le projet de Site web.
- Peut-être cela aidera. stackoverflow.com/a/29519572/1467014 . La seule chose qui me reste à faire est de retirer un peu d'ef références dans un contrôleur. Alors, à moins que j'ai raté quelque chose, il n'y a pas d'autres ef dépendances dans mon projet web.
- Si j'ai bien compris les choses correctement, la chaîne de connexion est censé en être placés dans le web.config du projet de site web...parce que toutes les configurations est censé être placé dans main(){...}, qui, dans le ASP.NET web app est le cas de la Startup.cs de la classe ou de la Mondiale.asax dans le projet de Site web.
- Je pense que vous avez toujours besoin d'une référence à EF dans votre projet de Site web, car vous aurez besoin de DbContext de EF dans vos configurations.
Vous devez vous connecter pour publier un commentaire.
Pour déplacer le IdentityModel dans une bibliothèque de classe (qui est la bonne chose à faire selon les PRS), suivez ces étapes:
Faire IdentityModel.cs ressembler à ceci:
Assurez-vous que votre site Web.config a YourContextName pointant vers la droite de la base de données dans la section. (Note: cette base de données peut et doit la maison de vos données d'application).
Faire de votre Contexte EF classe hérite de votre ApplicationDbContext:
Quand quelqu'un dans votre site tente de vous connecter ou de vous inscrire, le système d'Identité sera de les diriger vers votre base de données avec tous vos données qui comprend l'Identité des tables.
Bon!
ConfigureAuth
besoinsapp.CreatePerOwinContext(ApplicationDbContext.Create);
etuser.GenerateUserIdentityAsync(manager)
, devrais-je ajouter ces 2 méthodes pourIdentityModel.cs
?Une mise à jour de @Rap réponse à EF6 et de l'Identité 2.0:
IdentityModel.cs devrait ressembler à ceci, pas besoin de changer quoi que ce soit:
Assurez-vous que votre site Web.config a un contexte qui pointe vers la droite de la base de données dans la section. (Note: cette base de données peut et doit la maison de vos données d'application).
Faire de votre Contexte EF classe hérite de votre ApplicationDbContext:
Qu'entendez-vous par le déplacement de l'Identité dans une bibliothèque de classe? pour être utilisé comme une référence? J'ai mon personnalisés du gestionnaire des utilisateurs et de l'utilisateur dans une bibliothèque séparée, mais c'est tout.
L'identité affaires exige une banque de données de quelque sorte. Si vous configurez Identité à utiliser EF, être sûr d'obtenir le supplément de package nuget pour elle, et vous devriez être en mesure de passer à la chaîne de connexion lorsque vous créez le contexte.
Sur le dessus de ma tête...
Je pense que l'EF magasin "UserStore", je dois vérifier.
Il y a près d'une douzaine de différents packages nuget pour les banques de données d'Identité maintenant. Vous n'avez pas à utiliser EF, mais il nécessite un magasin de quelque sorte.
** EDIT **
Aussi, comme une référence, il sera toujours utiliser la config, et donc de ses régimes de chaînes de connexion, de la principal du projet par défaut, c'est comment son supposé travailler, donc c'est ok.
Il y a quelques règles que vous devez connaître et de mémoriser.
Tout d'abord, le projet Web sera TOUJOURS et UNIQUEMENT utiliser le web.fichier de configuration(s) qu'il trouve dans son propre projet - période. Il n'a pas d'importance ce que vous mettez dans tout autre fichier de config n'importe où ailleurs dans votre solution. Le projet web ne peut utiliser ce qu'il trouve dans son propre projet. Si vous avez une chaîne de connexion dans un autre projet, vous devez répliquer sur le projet web, sinon il ne sera jamais trouvé.
Deuxièmement, en supposant que le projet web est votre projet de démarrage, et en supposant que vous utilisez, les migrations de données (puisque l'Identité il utilise), notez que le gestionnaire de paquet de Toujours utiliser la chaîne de connexion qu'il trouve dans le démarrage du projet. Par conséquent, le gestionnaire de paquets, pour la mise à jour de la base de données, ne pas utiliser la chaîne de connexion dans votre projet de modèle.
La solution est simple:
1. Copie de votre chaîne de connexion à partir de votre projet de modèle de votre projet web.
2. Dans le gestionnaire de paquets de la console, assurez-vous que le menu déroulant pour sélectionner le contexte est pointant vers votre modèle de projet.
Question 1:-
Je suppose que peuvent utiliser la solution trouvée sur le lien ci-dessous:-
Le Programme D'Installation Entity Framework Pour La Dynamique De La Chaîne De Connexion
Question 2:-
Je crois que le cadre de l'entité construire la voie que lorsque le temps d'exécution vise à utiliser le web.config de ce projet. Instruction de la part de Microsoft suggèrent également que
http://msdn.microsoft.com/en-us/library/vstudio/cc716677(v=vs. 100).aspx
Je suppose que je suis un peu en retard à la fête, mais pour les futurs lecteurs, voici une bonne lecture.