3

asp.net mvc 4.5 インターネット アプリケーションに付属するデフォルトの単純なメンバーシップ データベースについて、この簡単な質問をしたいと思います。私の質問は、最初に新しいユーザーを作成するときにテーブルを作成する場所についてです。デフォルトの接続でテーブルを作成します。文字列 (LocalDB) ? カスタムの MS SQL Express データベースを使用するようにデフォルトの接続文字列を変更すると、それが反映され、それらのテーブルが新しいデータベースに作成されますか?

デフォルトのアカウント モデルでこのコードに気付きました。その DbContext クラスでは、デフォルトの接続を参照しています。これはそこにあるコードです。

public class UsersContext : DbContext
{
    public UsersContext() : base("DefaultConnection")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}
4

2 に答える 2

2

SimpleMembership はInitializeSimpleMemberhsipAttribute.csクラスで初期化されます。

デフォルトの MVC 4 インターネット プロジェクト テンプレートで Filters ディレクトリに移動すると、上記のクラスで初期化メソッドが見つかります。

WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile",
 "UserId", "UserName", autoCreateTables: true);

これがデフォルトの設定です。別のデータベースを指定する場合は、次のようにします。

WebSecurity.InitializeDatabaseConnection("MyContext", "TableToPointTo", 
"UserIdColumn", "UserNameColumn", autoCreateTables: false);

あなたのコンテキストクラスで:

public class MyContext : DbContext {...}

そして<configuration>、ルートweb.configファイルのセクション内の接続文字列セクションの名前を変更します。

<connectionStrings>
    <add name="MyContext" connectionString="..." />
</connectionStrings>
于 2013-04-22T20:21:37.243 に答える
1

私は同じ問題に直面していたので、このスレッドを調べてきました。私は次のようなすべてのステップを試しました-

  • SQLServer へのアクセス許可の付与
  • アカウント コントローラーの [InitializeSimpleMembership] 属性を削除し、Global.asax に WebSecurity.InitializeDatabaseConnection 接続を追加します。

しかし、何も機能しませんでした。

だから何か他のことを試した -

  • デフォルトの接続文字列のデータ ソースを localhost に変更しました。
  • MVCApp という名前のローカルホストに空の DB を作成しました
  • 接続文字列の初期カタログを MVCApp に設定します
  • 接続文字列から AttachDBFilename を削除しました

これで、接続文字列がローカル データベースを指します。そして、それはうまくいきました。

ほんの数日前に機能していた MS によるデフォルトの実装が、現在機能していない理由はまだわかりません。しかし、現時点では、回避策に満足しています。

于 2014-04-15T09:01:54.277 に答える