我有一个标准的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; }
}
从我读过的所有内容中,我认为这应该是我需要做的全部工作,但我有两个问题:
没有加载会员资格表
即使我引用了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>
我在这里缺少什么?
答案 0 :(得分: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,没有客户端版本)
希望这有帮助。
答案 1 :(得分:0)
据我所知,你错过了
public DbSet<User> User{ get; set; }
在您的上下文类中。您需要为数据库中Migrations
为您创建的每个表执行此操作。