0

標準のASP.NETMVC4アプリケーションがあり、EFコードファーストを使用してDALを構築しています。現在、20〜30のモデルがあり、ユーザーとロールを統合したいと思っています。私はこれを1トン研究しましたが、それでも機能させることができないようです。これが私が今持っているものです:

私のデータベース初期化クラス(モデルを変更するたびに呼び出されます)で、大量のデータをシードしてから、次のように呼び出します。

public class DbInit : DropCreateDatabaseIfModelChanges<TrackerContext>
{
    protected override void Seed(TrackerContext context)
    {
      ...seed stuff and save it...
      WebSecurity.InitializeDatabaseConnection("TrackerContext", "User", "Id", "UserName", autoCreateTables: true);
    }
}

デバッグにより、エラーはスローされず、このコード行にヒットしていることを確認できます。私のユーザーモデルは次のようになります。

public class User
{
    public int Id { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public string Email { get; set; }
    public PasswordQuestion PasswordQuestion{ get; set; }
    public string PasswordAnswer { get; set; }
    public string Type { get; set; }
}

私が読んだすべてのことから、これを機能させるために必要なことはこれだけだと思いましたが、2つの問題があります。

  1. メンバーシップテーブルはロードされていません

  2. WebMatrix.WebData dllを参照しているのに、Configがエラーをスローしているようです

設定セクションは次のとおりです。

<roleManager enabled="true" defaultProvider="SimpleRoleProvider">
  <providers>
    <clear/>
    <add name="SimpleRoleProvider" type="WebMatrix.WebData.SimpleRoleProvider, WebMatrix.WebData"/>
  </providers>
</roleManager>
<membership defaultProvider="SimpleMembershipProvider">
  <providers>
    <clear/>
    <add name="SimpleMembershipProvider" type="WebMatrix.WebData.SimpleMembershipProvider, WebMatrix.WebData" />
  </providers>
</membership>

ここで何が欠けていますか?

4

2 に答える 2

0

1)ConnectionStringを確認しましたか?次のようになります。

 <connectionStrings>
    <add name="DefaultConnection" connectionString="data source=SERVER;initial catalog=DATABASE;user id=USER;password=PASSWORD;" providerName="System.Data.SqlClient" />
</connectionStrings>

さらに、これも設定に含める必要があります。

 <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

2)参照を確認します。そこにあり、 trueに設定する必要System.Web.Webpagesがあります。CopyLocal次に、.NET Frameworkのバージョンも確認します(4.0、Client Editionなし)。

お役に立てれば。

于 2013-04-29T08:16:43.950 に答える
0

私が見る限り、あなたは

public DbSet<User> User{ get; set; }

コンテキストクラスで。データベースに作成するすべてのテーブルに対してこれを行う必要がありMigrationsます。

于 2013-05-05T19:51:43.317 に答える