2016-09-18 9 views
2

MVC4で登録フォームとログインフォームを使用しようとしています。 DBからEntity Frameworkを使用してモデルを作成しましたが、メンバーシップテーブルを生成したいのですが、多くのことを試みましたが、まだアクセスできません。私はUniversitetiEntitiesでベースに変更mvc4のメンバーシップテーブルにアクセスするにはどうしたらいいですか?

<connectionStrings> 
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-Projekti-20160917211151;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Projekti-20160917211151.mdf" providerName="System.Data.SqlClient" /> 

<add name="UniversitetiEntities" connectionString="metadata=res://*/Models.Universiteti.csdl|res://*/Models.Universiteti.ssdl|res://*/Models.Universiteti.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=ARBERS-PC\BERSANTA;initial catalog=Universiteti;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> </connectionStrings> 

勘定モデルで:私は2つの接続文字列を持っている

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

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

[Table("UserProfile")] 
public class UserProfile 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 
    public string UserName { get; set; } 
} 

を私もこのチャンInitializeSimpleMembershipAttribute内のファイルでした:

private class SimpleMembershipInitializer 
    { 
     public SimpleMembershipInitializer() 
     { 
      Database.SetInitializer<UsersContext>(null); 

      try 
      { 
       using (var context = new UsersContext()) 

       { 
        if (!context.Database.Exists()) 
        { 
         // Create the SimpleMembership database without Entity Framework migration schema 
         ((IObjectContextAdapter)context).ObjectContext.CreateDatabase(); 
        } 
       } 

       WebSecurity.InitializeDatabaseConnection("UniversitetiEntities", "UserProfile", "UserId", "UserName", autoCreateTables: true); 
      } 
      catch (Exception ex) 
      { 
       throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex); 
      } 
     } 
    } 
} 

をそれは常にこの例外をスローします:ASP.NETシンプルメンバーシップデータベースc初期化されません。

答えて

1

AFAIK、SimpleMembershipProviderユーザープロファイル管理は、EF接続文字列ではなく、SQL Serverデータベース接続文字列でのみ機能します。

まず、EF-生成された接続文字列ではなく、あなたのDB接続文字列を設定してみてください述べたようにhere

private class SimpleMembershipInitializer 
{ 
    public SimpleMembershipInitializer() 
    { 
     Database.SetInitializer<UsersContext>(null); 

     try 
     { 
      using (var context = new UsersContext()) 
      { 
       if (!context.Database.Exists()) 
       { 
        // Create the SimpleMembership database without Entity Framework migration schema 
        ((IObjectContextAdapter)context).ObjectContext.CreateDatabase(); 
       } 
      } 

      WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true); 
     } 
     catch (Exception ex) 
     { 
      throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex); 
     } 
    } 
} 

// also set your DB connection string on current DB context 
public class UsersContext : DbContext 
{ 
    public UsersContext() 
     : base("DefaultConnection") 
    { 
    } 

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

最初のソリューションが動作しない場合は、SQL Server接続文字列からAttachDbFileNameプロパティを削除してみてください:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-Projekti-20160917211151;Integrated Security=SSPI" providerName="System.Data.SqlClient" /> 

NB:あなたのDB接続がアクセスを得るために、特定のユーザーID &パスワードが設定されている場合は、DefaultConnectionに含めます。

あなたのEFモデル生成に応じて、(コードでは、まず、データベースが最初またはモデル最初のアプローチ)、あなたはUserProfileテーブルの存在から、ベースの真または偽でautoCreateTables:を設定することができます。

詳しい情報:SimpleMembership Provider Reference

+0

私は「DefaultConnectionを」でそれを変更しますが、私はまだ、このエラーが出ます:「System.InvalidOperationException」種類の例外がProjekti.dllで発生したが、 –

+0

編集してくださいユーザーコードで処理されていなかったあなた'InvalidOperationException'が適用された特定の条件によってトリガされる可能性があるので、例外の詳細とスタックトレースを指定してください。 –

関連する問題