ASP.NET会员提供程序与EF

7

我一直在使用ASP.NET成员资格提供程序,它的默认方式已经能够很好地满足我的基本需求。我意识到一件事情,它会向数据库安装一堆存储过程等等。

是否有ASP.NET成员资格的EF实现?或者将来会有吗?

我即将开始一个项目,需要通过一些GUI扩展成员资格提供程序的角色和授权功能。

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

3个回答

2

0
对于在Entity Framework中实现ASP.NET成员资格提供程序和角色,需要在EDMX文件中导入ASPNETDB(成员资格数据库)的所有视图。例如vw_aspnet_MembershipUsers、vw_aspnet_Roles、vw_aspnet_UsersInRoles、vw_aspnet_Users等。
然后可以通过EF运行Membership。因此,您可以使用以下功能提供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. 现在将显示一个标题为“选择SQL Server数据库”的窗口。我们需要选择我们的SQL Server数据库。这里需要设置服务器、身份验证类型和数据库。如果选择默认名称“aspnetDb.mdf”,则将选择该数据库。如果您想修改现有数据库,请选择该数据库。

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

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

在上述步骤中,请注意选择您现有的数据库,会向您现有的数据库添加一些表(11个以上)、视图、Membership和Roles的存储过程......

享受它吧....谢谢...


对于 Code First 方法,可以使用 Database 上的 ExecuteSqlCommand 方法将非查询命令发送到数据库。context.Database.ExecuteSqlCommand("<Your Membership SQL>"); - Amit Prajapati
不太感兴趣于 SQL 查询或存储过程。现在还有谁在使用它们呢? - DarthVader

0

你可以查看或添加到你的项目中的MVC3 gui会员管理系统。

你可以尝试使用它们并了解它们的工作原理。一旦你知道在哪里查找,就很简单,你也可以创建自己的系统。

Membership ClassMembershipUser Class包含所有用户信息。例如,要取消批准某个用户,可以执行以下操作:

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

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

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

如果您需要更多的功能,可以查看实现成员资格提供程序

关于使用两个数据库的问题,这并非必要。您可以使用Aspnet_regsql工具将所有ASP.NET表、存储过程等添加到您的数据库中。请参阅使用Aspnet_regsql.exe安装数据库。这将允许您只有一个数据库,因此您可以在Web.Config中删除asp.net连接字符串,然后更改AspNetSqlMembershipProvider AspNetSqlProfileProvider AspNetSqlRoleProvider和其他一些内容,以使用您主数据库的连接字符串。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接