我正在尝试掌握 mvc4 ,我刚刚使用 asp.net mvc4 创建了一个新的 Internet 应用程序
。我想知道如何在 asp.net mvc4 中生成 SimpleMemberShipProvider
。他们在名为 SimpleMembershipInitializer
的 Filter
文件夹中添加了一个新类,但我不知道如何使用该类生成表。
提前致谢。
最佳答案
如果您已经创建了数据库,并将 web.config
中的连接字符串设置为该数据库,那么当您第一次转到 Account/Login
时,它将为您生成表。请注意,并不是所有的表都会生成,直到您第一次通过“注册”创建用户,然后您还会看到以 webpages_
开头的表
编辑如果您在 MVC4 中使用 Internet 应用程序模板,那么默认模板将在 App_Data 文件夹中为您设置 localdb。这将在您第一次运行应用程序并调用数据库时创建。 (编辑结束)
查看我的回答 here to "How do I use my own database with SimpleMembership and WebSecurity? What is MVC4 security all about?",了解 SimpleMembership 的概述以及它们如何组合在一起。
请注意,如果您不调用 Account/Login
,那么数据库将不会初始化,因此在某些情况下您需要自己初始化它,您可以在 global.asax.cs 的 Application_Start
中使用以下行,或者参见我的回答 here to "ASP.NET MVC 4, The “WebSecurity.InitializeDatabaseConnection” method can be called only once" 了解更全面的场景。
if (!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection("myConnectionStringName", "Users", "UserId", "Email", autoCreateTables: true);
}
或者,您可以将 InitializeSimpleMembership
注册为 global filter ,这与在 global.asax.cs 中使用上述代码具有相同的效果。
InitializeSimpleMembership
只是为您执行上述代码行,但因为它只是装饰提供的模板中的 AccountController
,所以只有当您访问该 Controller 上的操作之一时,它才会启动。这是我们大多数人第一次绊倒的地方。 MVC Internet 应用程序模板仅提供使用它的示例方法。您需要实际确保它在整个站点上使用,以便拥有一个生产就绪的系统。
脚注:
现在您已经开始使用 SimpleMembership,值得立即了解它在 code-first scenario 中效果最好,并且最简单的方法是立即将 UserProfile 模型类放入您自己用于所有其他模型的 DbContext 中在你的代码中;这将为您避免以后出现很多问题。我将让您单独提出更多问题,因为这有点偏离主题。
请注意,您可以对 DbContext 和 SimpleMembership 使用相同的连接字符串名称(默认情况下,这在 Visual Studio 项目模板中称为“DefaultConnection”)。
关于c# - 如何在我的数据库中生成成员(member)提供者表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16828482/