我正在使用EF5 VS2012并使用SimpleMembership。我让MS自动创建SQL表
WebSecurity.InitializeDatabaseConnection("SqlRoleManagerConnection", "webpages_Users", "UserID", "Username", true);
每当我尝试从DB创建模型来创建EDMX时,它都会省略webpages_UsersInRoles表。 XML中有对此表的引用,但它没有出现在图中,也没有为它生成类。我正在运行VS2012 Update 1,因此这与常见的bug无关。我还手动选择了无法修复的“运行自定义工具”。
您可能知道,这个缺失的表只包含两个用于链接Users和Roles表的FK字段。
我试图创建一个新项目和新的EDMX文件,它们都产生相同的结果 - 缺少webpages_UsersInRoles图和&类。
编辑:我可以重复从DB更新并选择表格,它不会添加到图表或类中。这种行为的原因是什么?如何强制EF连接所有内容以便我可以使用此表和类?
答案 0 :(得分:2)
通常,您不会直接在代码中引用该表。您使用的是Membership
API。
这是一篇很好的帖子来阅读它:Seeding Membership & Roles in ASP.NET MVC 4
示例代码:
private void SeedMembership()
{
if (!Roles.RoleExists("Administrator"))
{
Roles.CreateRole("Administrator");
}
if (!Roles.RoleExists("Teacher"))
{
Roles.CreateRole("Teacher");
}
if (!Roles.RoleExists("Student"))
{
Roles.CreateRole("Student");
}
if (!WebSecurity.UserExists("leniel"))
{
WebSecurity.CreateUserAndAccount("leniel", "mypass");
}
if (!Roles.GetRolesForUser("leniel").Contains("Administrator"))
{
Roles.AddUsersToRoles(new[] { "leniel" }, new[] { "Administrator" });
}
if (!WebSecurity.UserExists("tester"))
{
WebSecurity.CreateUserAndAccount("tester", "test123");
}
if (!Roles.GetRolesForUser("tester").Contains("Administrator"))
{
Roles.AddUsersToRoles(new[] { "tester" }, new[] { "Administrator" });
}
}
答案 1 :(得分:0)