1

今日、私は新しいASP.NETMVC4プロジェクトであるインターネットアプリケーションを作成しました。

アカウントコントローラーのソリューションに含まれるすべてのファイルで、次の属性が表示されました。[InitializeSimpleMembership]

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

そして、web.configで適切なdbconnectionstringプロパティを提供するだけです。

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

また、アプリケーションを実行すると、使用可能なデータベースが存在するかどうかがチェックされ、存在しない場合はデータベースが作成され、メンバーシップテーブルもいくつか追加されます。私は新しいMVC4-インターネットアプリテンプレートに非常に感銘を受けたと言わなければなりません。

それは私の質問に私をもたらします: 私はデータベースを作成し、アプリケーションからスクリプトを実行するというアイデアが好きでした。これにテーブルを追加する方法を知りたいと思いました。

例:InitializeSimpleMembershipAttribute.csファイルで、データベースが存在するかどうかを確認します。存在しない場合は、web.configに存在する資格情報を使用してデータベースを作成し、次のテーブルも追加します。

  • UserProfile
  • webpages_Membership
  • webpages_OAuthMembership
  • webpages_Roles
  • webpages_UsersInRoles

これと一緒に他のテーブルを追加するには、どのような変更を加える必要がありますか?

これが可能であれば、SQLスクリプトを保持し、クリーンなデプロイごとに実行するという考えを回避できます。私はセルフホストMVCアプリ(オープンソースで、まもなくCodeplexに登場します;))に取り組んでいるので、SQLスクリプトで手を汚さずに私のアプリを使用したい人にとっては本当に良いでしょう。

これが可能かどうか誰かに知らせてもらえますか?ありがとう

4

1 に答える 1

4

作成されるテーブルには、次の2つの異なる部分があります。

  1. UserProfileテーブルは、Models / AccountModels.csのモデルの前に属性[Table( "UserProfile")]を追加することによって作成されます(コンテキストにもDbSetとして追加することを忘れないでください)。
  2. 'webpages_'テーブルは、Controllers/AccountController.csに[InitializeSimpleMembership]を追加することによって呼び出されるFilters/InitializeSimpleMembershipAttribute.csのWebSecurity.InitializeDatabaseConnection呼び出しによって作成されます。これらはSimpleMembershipProviderに必要な「内部」テーブルであり、通常は変更する必要はありません。

これは、EntityFrameworkのCodeFirstメソッドと呼ばれます(他のオプションはModelFirstとDbFirstです)。独自のPOCO/モデルを自動作成するには、上記のUserProfileと同様のTable( "TableName")属性を追加します。

CodeFirstアプローチ(およびその他多数)の完全なウォークスルーについては、EntityFrameworkWebサイトを参照してください。 http://msdn.microsoft.com/en-us/data/ef.aspx

于 2012-11-05T10:40:09.307 に答える