简单成员资格提供程序未向我的数据库添加表



我有一个标准的 ASP.NET MVC4 应用程序,我正在使用 EF Code First 构建 DAL。目前大约有 20-30 个模型,我正处于想要整合用户和角色的地步。我已经对此进行了大量研究,但似乎仍然无法使其正常工作。这是我现在拥有的:

在我的数据库初始化类中(每次更改模型时都会调用),我用一堆数据为它播种,然后调用这个:

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; }
}

从我读到的所有内容来看,我认为这应该是我需要做的所有事情来让它工作,但我有两个问题:

  1. 未加载任何成员表

  2. 我的配置似乎抛出了一个错误,即使我引用了WebMatrix.WebData dll

这是配置部分:

<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>

我在这里错过了什么?

据我所知,你错过了

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

在您的上下文类中。您必须为希望Migrations在数据库中为您创建的每个表执行此操作。

1) 你检查过你的连接字符串吗?应该是这样的:

 <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)检查您的参考资料。 System.Web.Webpages应该存在,CopyLocal应该设置为 true。然后检查您的 .NET Framework 版本(4.0,无客户端版本)

希望这有帮助。

最新更新