实体框架无法识别webpage_UsersInRoles

时间:2013-02-13 00:25:06

标签: asp.net-mvc-4 entity-framework-5 simplemembership

我正在使用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连接所有内容以便我可以使用此表和类?

enter image description here

2 个答案:

答案 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)