1

今天,我創建了一個新的ASP.NET MVC 4項目 - 互聯網應用。如何隨着在ASP.NET MVC SimpleMembership表autoCreateTables

與所有進來的賬戶控制器解決方案的文件,我看到了所謂的[InitializeSimpleMembership]

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

和屬性僅僅提供一個適當的分貝在web.config中的ConnectionString屬性

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

和應用程序運行時,它會檢查可用的數據庫的存在與否,如果不建立一個和廣告ds也沒有幾個memebership表。我必須說,我非常非常深刻的印象新的MVC 4 - 互聯網應用模板。

這讓我想起了我的問題: 我喜歡創建數據庫和應用程序執行腳本的想法。我想知道如何爲此添加更多表格。

例如:在InitializeSimpleMembershipAttribute.cs文件中,它檢查數據庫是否存在,如果不存在,則使用web.config中存在的憑證創建該數據庫,並向其中添加以下表格。

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

什麼變化我必須做出有我的其它表可以與此一起添加?

如果這是可能的話,可以避免保留SQL腳本並在每個乾淨部署上執行它們的想法。我正在開發一個自承載MVC應用程序(它是開源的,很快就會出現在Codeplex上);所以這對於那些想要使用我的應用程序而不會在SQL腳本中弄髒手的人來說確實很好。

請可有一個人讓我知道,如果這甚至有可能。感謝

回答

4

有兩個不同的部分,以表被創建:

  1. 的用戶配置表是通過在模型/ AccountModels.cs模型之前添加屬性[表(「用戶配置」)]創建(記住將它作爲DbSet添加到您的上下文中)。
  2. 'webpages_'表由通過在Controllers/AccountController.cs中添加[InitializeSimpleMembership]調用的Filters/InitializeSimpleMembershipAttribute.cs中的WebSecurity.InitializeDatabaseConnection調用創建。這些是由SimpleMembershipProvider需要「內部」的表,你通常不會想改變它們。

這就是所謂的的EntityFramework(你的其他選項ModelFirst和DbFirst)的CodeFirst方法。要自動創建您自己的POCO /模型,您希望添加與上面的UserProfile類似的Table(「TableName」)屬性。

請參閱實體框架網站以瞭解CodeFirst方法的全部演練(以及更多內容)。 http://msdn.microsoft.com/en-us/data/ef.aspx