如何在ASP.NET MVC中自动创建表和SimpleMembership表

时间:2012-11-01 06:26:23

标签: asp.net-mvc asp.net-mvc-4 membership-provider simplemembership

今天,我创建了一个新的ASP.NET MVC 4项目 - Internet应用程序。

使用帐户控制器中的解决方案中的所有文件,我看到了一个名为[InitializeSimpleMembership]的属性

[Authorize]
[InitializeSimpleMembership]
public class AccountController : Controller
{}

并且只在web.config中提供适当的db connectionstring属性

<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.;
Initial Catalog=demo;
User ID=test;Password=test;" providerName="System.Data.SqlClient" />

当应用程序运行时,它会检查是否存在可用的数据库,如果没有,则创建一个并且还添加几个memebership表。我必须说我对新的MVC 4 - 互联网应用模板印象非常深刻。

这让我想到了我的问题: 我喜欢从应用程序创建数据库和执行脚本的想法。我想知道如何为此添加更多表格。

例如:在InitializeSimpleMembershipAttribute.cs文件中检查数据库是否存在,如果没有,则使用web.config中存在的凭据创建数据库,并将以下表格添加到其中。

  • 用户配置
  • webpages_Membership
  • webpages_OAuthMembership
  • webpages_Roles
  • webpages_UsersInRoles

我需要做哪些更改才能将其他表格与此一起添加?

如果可以,可以避免保留sql脚本并在每次干净部署上执行它们的想法。我正在开发一个自主MVC应用程序(它是开源的,很快就会出现在Codeplex上;))所以这对那些想要使用我的应用而不会在SQL脚本中弄脏的人来说真的很好。

如果有可能,请有人告诉我。感谢

1 个答案:

答案 0 :(得分:4)

正在创建的表有两个不同的部分:

  1. UserProfile表是通过在Models / AccountModels.cs中的模型之前添加属性[Table(“UserProfile”)]创建的(请记住将其作为DbSet添加到您的上下文中)。
  2. 'webpages_'表是通过在Controls / AccountController.cs中添加[InitializeSimpleMembership]调用的Filters / InitializeSimpleMembershipAttribute.cs中的WebSecurity.InitializeDatabaseConnection调用创建的。这些是SimpleMembershipProvider所需的“内部”表,您通常不会想要更改它们。
  3. 这称为EntityFramework的CodeFirst方法(您的其他选项是ModelFirst和DbFirst)。要自动创建自己的POCO /模型,您需要添加类似于上面的UserProfile的Table(“TableName”)属性。

    请参阅实体框架网站,了解CodeFirst方法的完整演练(以及更多内容)。 http://msdn.microsoft.com/en-us/data/ef.aspx