有没有一种方法,以消除内MVC 4实体框架默认的相关性?(Is there a way to rem

2019-08-18 06:53发布

有没有一种方法,以消除一个ASP.NET MVC 4项目内的实体框架默认的相关性,并与其他类似技术,如更换了Dapper

Answer 1:

如果你创建一个新的ASP.NET MVC 4 Web应用程序,然后选择“互联网应用”的项目模板,你会发现,实体框架被引用并作为SimpleMembership的一部分。 然而,只有在实体框架一个非常小的依赖,这可能是不值得取出。

实体框架似乎被用于仅仅2个次要任务

在使用实体框架的第一种方式是创建一个用于存储会员数据所需的数据库架构。 数据库模式创建不是一件小巧玲珑会为你做,如果你删除实体框架,你必须手动管理更改您的会员模式/数据库。

在使用实体框架的第二种方法是名为“ExternalLoginConfirmation”默认“的AccountController”内作为其一部分的OAuth集成一个单独的方法中。 它是用来注册已经从外部供应商(如Facebook)认证的新用户。

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

由于SimpleMembership使用SQL命令,而不是实体框架应该尽可能快地完成这个任务相当小巧玲珑的解决方案。 此外,SimpleMembership的这种配置已经得到了广泛的微软和社区进行测试。 对于这些原因,我将离开单干。 与安全交易代码应该留给认可的安全专家[2]。

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

如果你真的想,依赖是非常容易清除(我假设你的会员数据库已经创建和工作)。

=====> 步骤1

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

上“的EntityFramework”单击鼠标右键,选择“删除”。

=====> 第2步

打开过滤器/ InitializeSimpleMembershipAttribute.cs

删除以下内容:

using System.Data.Entity.Infrastructure;

Database.SetInitializer<UsersContext>( null );

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

=====> 第3步

打开: 型号/ AccountModels.cs

删除以下内容:

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

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

=====> 第4步

开放式: 控制器/ AccountController.cs

查找名为“ExternalLoginConfirmation”的方法。

替换以下内容:

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]“让我给你滚你自己的密码算法和安全系统,我所有的标准。注意:不要这是非常,非常容易创造出几乎但不完全安全的防盗系统的安全系统,它给你。安全的一种虚假的安全感比没有任何安全系统更糟糕的了!”
埃里克利珀,传奇



文章来源: Is there a way to remove the default dependency on Entity Framework within MVC 4?