Est-il possible de supprimer la dépendance par défaut sur Entity Framework dans MVC 4?

asp.net-mvc-4 dapper entity-framework

Question

Existe-t-il un moyen de supprimer la dépendance par défaut sur Entity Framework dans un projet ASP.NET MVC 4 et de la remplacer par une autre technologie similaire telle que Dapper

Réponse acceptée

Si vous créez une nouvelle application Web ASP.NET MVC 4 et que vous choisissez "Application Internet" comme modèle de projet, vous remarquerez que Entity Framework est référencé et utilisé dans le cadre de SimpleMembership. Cependant, il existe une très petite dépendance à Entity Framework et cela ne vaut probablement pas la peine de la supprimer.

Entity Framework semble être utilisé pour seulement 2 tâches mineures

La première façon dont Entity Framework est utilisé consiste à créer le schéma de base de données nécessaire pour stocker les données d'appartenance. La création du schéma de base de données n'est pas quelque chose que Dapper fera pour vous et si vous supprimez Entity Framework, vous devrez gérer manuellement les modifications apportées à vos modèles / bases de données d'appartenance.

La deuxième façon dont Entity Framework est utilisé est une méthode unique appelée "ExternalLoginConfirmation" dans la valeur par défaut "AccountController" dans le cadre de son intégration OAuth. Il est utilisé pour enregistrer les nouveaux utilisateurs qui ont été authentifiés par un fournisseur externe (comme Facebook).

On peut dire que SimpleMembership utilise des commandes SQL et non Entity Framework [1].

Comme SimpleMembership utilise des commandes SQL et non Entity Framework, il devrait être aussi rapide qu'une solution Dapper comparable pour cette tâche. En outre, Microsoft et la communauté ont testé cette configuration de SimpleMembership. Pour ces raisons, je le laisserais tranquille. Le code traitant de la sécurité devrait être laissé aux experts en sécurité accrédités [2].

Comment supprimer Entity Framework d'une nouvelle application Web ASP.NET MVC 4

Si vous le voulez vraiment, la dépendance est très facile à supprimer (je suppose que votre base de données d'appartenance est déjà créée et fonctionne).

=====> Étape 1

Dans l'Explorateur de solutions Visual Studio, ouvrez le dossier "Références".

Cliquez avec le bouton droit sur "EntityFramework" et sélectionnez "Supprimer".

=====> Etape 2

Ouvrez les filtres / InitializeSimpleMembershipAttribute.cs

Supprimer les éléments suivants:

using System.Data.Entity.Infrastructure;

et

Database.SetInitializer<UsersContext>( null );

et

using ( var context = new UsersContext() ) {
    if ( !context.Database.Exists() ) {
        // Create the SimpleMembership database without Entity Framework migration schema
        ( ( IObjectContextAdapter ) context ).ObjectContext.CreateDatabase();
    }
}

=====> Etape 3

Ouvrir: Models / AccountModels.cs

Supprimer les éléments suivants:

public class UsersContext : DbContext {
    public UsersContext()
        : base( "DefaultConnection" ) {
    }

    public DbSet<UserProfile> UserProfiles {
        get;
        set;
    }
}

=====> Etape 4

Ouvrir: Controllers / AccountController.cs

Recherchez la méthode nommée "ExternalLoginConfirmation".

Remplacez les éléments suivants:

using ( UsersContext db = new UsersContext() ) {
    UserProfile user = db.UserProfiles.FirstOrDefault( u => u.UserName.ToLower() == model.UserName.ToLower() );
    // Check if user already exists
    if ( user == null ) {
        // Insert name into the profile table
        db.UserProfiles.Add( new UserProfile {
            UserName = model.UserName
        } );
        db.SaveChanges();

Avec votre code équivalent dapper - les commentaires de code vous indiquent ce qui doit être implémenté.

Vous devriez pouvoir supprimer cette méthode et d’autres méthodes si vous n’utilisez pas OAuth.

Et voilà ;)

[1] "Tout est implémenté en tant qu'appels SQL plutôt que d'exiger des procédures stockées, des vues, des agents et des notifications de modification."
Jon Galloway, Microsoft

[2] "Laissez-moi vous donner toutes les précautions habituelles concernant le déploiement de vos propres algorithmes cryptographiques et systèmes de sécurité: non. Il est très, très facile de créer des systèmes de sécurité quasiment sécurisés. Un système de sécurité qui vous donne un faux sentiment de sécurité est pire que l'absence de système de sécurité! "
Eric Lippert, légende



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi