0

我有一个标准的 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>

我在这里想念什么?

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

希望这可以帮助。

于 2013-04-29T08:16:43.950 回答
0

据我所知,你错过了

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

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

于 2013-05-05T19:51:43.317 回答