【问题标题】:ASP.NET membership provider with EF带有 EF 的 ASP.NET 成员资格提供程序
【发布时间】:2012-08-26 17:51:48
【问题描述】:

我一直在使用 ASP.NET 会员提供程序,它可以很好地满足我的基本目的。我意识到的一件事是,它将一堆存储过程等安装到数据库中。

是否有 ASP.NET 成员的 EF 实现?还是会有?

我有一个即将到来的项目,我需要通过一些 GUI 扩展成员资格提供者的功能,并提供角色和授权。

此外,每次我使用它时,我的 web.config 中有两个连接字符串,一个用于 DbContext,一个用于应用程序服务,特别是用于成员资格提供者。为什么我不能只有一个?

【问题讨论】:

    标签: c# asp.net asp.net-mvc-3 entity-framework


    【解决方案1】:

    通用供应商就是您要找的:http://nuget.org/packages/Microsoft.AspNet.Providers.Core

    这些是在内部使用 EF Code First 5 实现的,一旦我们确保一切顺利,我们将公开内部 DBContexts。

    【讨论】:

      【解决方案2】:

      有 MVC3 的 gui 成员管理系统,您可以查看或添加到您的项目中。

      你可以和他们一起玩,看看他们是如何工作的。一旦您知道在哪里查找并且您可以创建自己的,这很简单。

      Membership ClassMembershipUser Class 包含所有用户信息。例如,要取消批准用户,您可以这样做:

      MembershipUser user = Membership.GetUser("userName");
      user.IsApproved = false;
      Membership.UpdateUser(user);
      

      如果你想删除一个用户,你可以使用Membership.DeleteUser("userName");

      Roles Class 包含所有与角色相关的信息。 Like Roles.GetUsersInRole("roleName") 将返回角色roleName 中所有用户的列表。 Roles.CreateRole("roleName"); 将创建一个角色,Roles.DeleteRole("roleName"); 将删除一个角色。

      如果您需要的不仅仅是默认值,您可以查看Implementing a Membership Provider

      就拥有两个数据库而言,这不是必需的。您可以使用Aspnet_regsql 工具将所有 ASP.NET 表、存储过程等添加到您的数据库中。看看Installing the Database using Aspnet_regsql.exe。这将允许您只有一个数据库,因此您可以删除 Web.Config 中的 asp.net 连接字符串,然后更改 AspNetSqlMembershipProvider AspNetSqlProfileProvider AspNetSqlRoleProvider 可能还有其他人,以使用连接字符串到您的主数据库。

      【讨论】:

        【解决方案3】:

        对于 ASP.NET 成员资格提供者和实体框架中的角色实现,需要在 EDMX 文件中导入 ASPNETDB(成员资格数据库)的所有视图。例如vw_aspnet_MembershipUsers、vw_aspnet_Roles、vw_aspnet_UsersInRoles、vw_aspnet_Users 等...

        然后会员资格将通过 EF 运行。因此,您可以使用以下功能提供 GUI。

        这里是控制器代码。例如

          // GET: /Membership/Edit/5
        
            public ActionResult Edit(Guid id)
            {
                var recordToEdit = (from r in _db.vw_aspnet_Users where r.UserId == id select r).First();
                return View(recordToEdit);
            }
        
            public ActionResult Index()
            {
                return View(_db.vw_aspnet_MembershipUsers.ToList());
            }
        

        现在,如何将 ASPNETDB 合并到现有数据库中,以便在 web.config 中只创建一个连接字符串。 (你的问题:为什么我不能只有一个?)

        也可以使用以下步骤。

        ASPNETDB.MDF 是会员提供者数据库,用于存储和检索 来自数据库的会员数据,在这里我们将看到如何创建会员提供者数据库。用于创建 Aspnetdb.mdf 的命令是 ASPNET_RegSQL.EXE

        1.开始->程序->Microsoft Visual Studio 2005->Visual Studio 工具->Visual Studio 2005 命令提示符。在 Visual Studio 2005 命令提示符下键入 ASPNET_RegSQL.EXE

        1. 将显示标题为“欢迎使用 Asp.Net Sql Server 向导”的向导。这里需要点击下一步

        2. 接下来将显示带有“选择设置选项”的向导。现在我们需要选择设置选项“为应用程序配置 sql server 是默认设置”。选择您想要的,然后选择下一个。

        3. 将显示一个带有“Select Sql Server Database”的窗口 现在我们需要选择我们的 sql server 数据库。这里需要设置服务器、认证类型和数据库。 如果选择默认名称“aspnetDb.mdf”将被选中。如果要修改现有数据库,请选择该数据库。

        5.现在将显示带有标题“确认您的设置”的确认。现在检查服务器名称和数据库名称,然后单击下一步。

        1. 将显示一个带有“已创建或修改数据库”的窗口。现在点击完成

        在上述步骤中请注意您需要选择现有数据库,一些表 (11+)、视图、Membership 和 Roles 的存储过程将被添加到您现有的数据库中......

        好好享受吧……谢谢……

        【讨论】:

        • 对于 Code First 方法,可以使用数据库上的 ExecuteSqlCommand 方法将非查询命令发送到数据库。 context.Database.ExecuteSqlCommand("");
        • 对 sql 查询或存储过程不感兴趣。谁在用这些了?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-15
        • 1970-01-01
        • 1970-01-01
        • 2010-11-20
        • 2011-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多