c# - 如何在我的数据库中生成成员(member)提供者表

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

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

提前致谢。

最佳答案

如果您已经创建了数据库,并将 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/

相关文章:

c# - 如何访问 Xamarin.Forms 中 Resources (iOS) 文件夹的文件路径?

c# - 在内存中存储一​​个大对象还是在 C# 中只存储一个指向它的指针?

c# - 如何将 Facebook 赞按钮集成到我们的 asp.net c# 网站

jQuery .autosuggest 保留结果

c# - 如何实现标签计数

c# - 添加缺失的 html 标签

c# - 通过 C# 客户端 SDK 启动或运行 ECS 或 Fargate 任务

c# - 使用其他模块中的类

c# - 使用 javascript 取消所有事件

javascript - 获取相同大小的 youtube 和 Vimeo 缩略图