1

我试图掌握 mvc4 ,我刚刚Internet Application使用 asp.net mvc4 创建了一个新的。我想知道如何SimpleMemberShipProvider 在 asp.net mvc4 中生成。Filter他们在名为的文件夹 中添加了一个新类,SimpleMembershipInitializer但我不知道如何使用该类生成表。

提前致谢 。

4

2 回答 2

3

如果您已经创建了数据库,并将连接字符串设置web.config到该数据库中,那么当您第一次访问该数据库时,Account/Login它将为您生成表。请注意,在您首先通过“注册”创建用户之前,并非所有表都会生成,然后您还将看到以开头的表webpages_

编辑如果您在 MVC4 中使用 Internet 应用程序模板,那么默认模板将为您设置 App_Data 文件夹中的 localdb。这将在您第一次运行应用程序并调用数据库时创建。(结束编辑)

看看我对“如何将我自己的数据库与 SimpleMembership 和 WebSecurity 一起使用?MVC4 安全性到底是什么?”的回答。了解 SimpleMembership 及其如何组合在一起。

请注意,如果您不调用Account/Login,那么数据库将不会初始化,因此在某些情况下您需要自己初始化它,您可以Application_Start在 global.asax.cs 中使用以下行,或在此处查看我对“ ASP.NET MVC 4,“WebSecurity.InitializeDatabaseConnection”方法只能调用一次”,用于更全面的场景。

if (!WebSecurity.Initialized)
{
    WebSecurity.InitializeDatabaseConnection("myConnectionStringName", "Users", "UserId", "Email", autoCreateTables: true);
}

或者,您可以注册InitializeSimpleMembership全局过滤器,这与在 global.asax.cs 中使用上述代码具有相同的效果。

InitializeSimpleMembership只需为您完成上述代码行,但因为它只是AccountController在提供的模板中装饰,它只会在您访问该控制器上的其中一个动作时启动。这是我们大多数人第一次绊倒的地方。MVC Internet 应用程序模板仅提供了一种使用它的示例方式。您实际上需要确保在整个站点中使用它,以便拥有一个生产就绪的系统。


脚注:

现在您已经开始使用 SimpleMembership,值得立即知道它在代码优先方案中效果最好,并且最简单的方法是立即将 UserProfile 模型类放入您自己的 DbContext 中,您正在使用它来用于所有其他模型在您的代码中;这将为您以后避免很多问题。我会让你单独问更多关于这个的问题,因为它有点离题。

请注意,您可以为 DbContext 和 SimpleMembership 使用相同的连接字符串名称(默认情况下,这在 Visual Studio 项目模板中称为“DefaultConnection”)。

于 2013-05-30T05:25:09.557 回答
0

1) 如果您在 web.config 中提供默认连接字符串,会员将在第一次登录时自动创建数据库!

2) 如果您不提供任何连接,应用程序将在 machine.config 中查找默认连接,以在 SQL 实例或映射到那里的其他位置创建数据库。

3) 如果您需要创建自定义 MemberShipProvider,请查看此处:SimpleMembership、Membership Providers、

希望这对你有帮助!

于 2013-05-30T05:31:49.337 回答