Entity framework 有没有办法在MVC4中删除对实体框架的默认依赖?

Entity framework 有没有办法在MVC4中删除对实体框架的默认依赖?,entity-framework,asp.net-mvc-4,dapper,Entity Framework,Asp.net Mvc 4,Dapper,是否有一种方法可以删除ASP.NET MVC 4项目中对实体框架的默认依赖关系,并用另一种类似技术(如替换它?如果您创建一个新的ASP.NET MVC 4 Web应用程序并选择Internet应用程序作为项目模板,您会注意到实体框架被引用并用作项目模板的一部分简单记忆。然而,对实体框架的依赖性很小,可能不值得删除它 实体框架似乎只用于两个次要任务 使用实体框架的第一种方法是创建存储成员数据所需的数据库模式。Dapper不会为您创建数据库模式,如果删除实体框架,则必须手动管理对成员模型/数据库的更

是否有一种方法可以删除ASP.NET MVC 4项目中对实体框架的默认依赖关系,并用另一种类似技术(如

替换它?如果您创建一个新的ASP.NET MVC 4 Web应用程序并选择Internet应用程序作为项目模板,您会注意到实体框架被引用并用作项目模板的一部分简单记忆。然而,对实体框架的依赖性很小,可能不值得删除它

实体框架似乎只用于两个次要任务

使用实体框架的第一种方法是创建存储成员数据所需的数据库模式。Dapper不会为您创建数据库模式,如果删除实体框架,则必须手动管理对成员模型/数据库的更改

实体框架的第二种使用方式是在默认AccountController中的一个名为ExternalLoginConfirmation的方法中,作为其OAuth集成的一部分。它用于注册从外部提供商(如Facebook)认证的新用户

我们可以说SimpleMembership使用SQL命令,而不是实体框架[1]

因为SimpleMembership使用SQL命令,而不是实体框架,所以对于此任务,它应该与类似的简洁解决方案一样快。此外,此SimpleMembership配置已经过Microsoft和社区的广泛测试。出于这些原因,我将不去管它。处理安全性的代码应该留给经过认证的安全专家[2]

如何从新的ASP.NET MVC 4 Web应用程序中删除实体框架

如果你真的想,依赖关系是很容易删除我假设你的会员数据库已经创建和工作

====>第1步

在Visual Studio解决方案资源管理器中打开“引用”文件夹

右键单击EntityFramework并选择删除

====>第2步

打开筛选器/初始化SampleMembershipAttribute.cs

删除以下内容:

using System.Data.Entity.Infrastructure;
public class UsersContext : DbContext {
    public UsersContext()
        : base( "DefaultConnection" ) {
    }

    public DbSet<UserProfile> UserProfiles {
        get;
        set;
    }
}
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();

====>第3步

打开:Models/AccountModels.cs

删除以下内容:

using System.Data.Entity.Infrastructure;
public class UsersContext : DbContext {
    public UsersContext()
        : base( "DefaultConnection" ) {
    }

    public DbSet<UserProfile> UserProfiles {
        get;
        set;
    }
}
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();
使用简洁的代码-代码注释告诉您需要实现什么

如果不使用OAuth,您应该能够完全删除此方法和其他方法

[1] 一切都实现为SQL调用,而不需要存储过程、视图、代理和更改通知

[2] 让我给你们所有关于使用你们自己的密码算法和安全系统的标准警告:不要。创建几乎安全但不十分安全的安全系统是非常非常容易的。给你一种虚假安全感的安全系统比没有安全系统更糟糕


别误会我的意思,我喜欢EF5和所有迁移的东西。有人这样做过。我想将我的T-SQL合并到我的项目中,并执行一些老式的存储过程,我觉得不适合将整个客户从数据库中拉出来,而不仅仅是名字和姓氏。也许过度优化将是我的末日。我希望是一个不错的!!好的,我明白了。你问题的初稿听起来像是在咆哮,导致它被关闭,但现在看起来好多了。投票决定重新开放。谢谢杰米。看来你是对的。所有其他lib(如WebSecurity)都与ef没有任何依赖关系。