如何在我的数据库中生成成员资格提供程序表

时间:2013-05-30 05:19:28

标签: c# asp.net asp.net-mvc asp.net-mvc-4

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

提前致谢。

2 个答案:

答案 0 :(得分:3)

如果您已创建数据库,并将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,则数据库不会初始化,因此在某些情况下您需要自行初始化,您可以在Application_Start中使用以下行: global.asax.cs,或者查看我的回答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,所以只有在您访问该控制器上的某个操作时才会启动它。这是我们大多数人第一次绊倒的地方。 MVC Internet Application模板仅提供使用它的示例方式。您需要确保在整个站点中使用它才能拥有生产就绪系统。


脚注:

现在您已经开始使用SimpleMembership了,值得直接了解它在code-first scenario中效果最好,并且最简单的方法是立即将UserProfile模型类放入您正在使用的自己的DbContext中代码中的所有其他模型;这样可以防止以后出现很多问题。我会让你单独提出更多问题,因为它稍微偏离主题。

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

答案 1 :(得分:0)

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

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

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

希望这能帮到你!