2

我正在使用 EF5 VS2012 并使用 SimpleMembership。我让 MS 自动创建 SQL 表

WebSecurity.InitializeDatabaseConnection("SqlRoleManagerConnection", "webpages_Users", "UserID", "Username", true);

每当我尝试从 DB 创建模型以创建 EDMX 时,它都会省略 pages_UsersInRoles 表。XML 中有对这个表的引用,但它没有出现在图表上,也没有为它生成类。我正在运行 VS2012 Update 1,所以这与通常报告的错误无关。我还手动选择了无法修复的运行自定义工具。

您可能知道,这个缺失的表仅包含两个用于链接用户表和角色表的 FK 字段。

我尝试创建一个新项目和新的 EDMX 文件,它们都产生相同的结果 - 缺少 pages_UsersInRoles 图表和类。

编辑:我可以重复从数据库进入更新并选择表,它不会添加到图表或类中。这种行为的原因是什么?如何强制 EF 连接所有内容以便我可以使用这个表和类?

在此处输入图像描述

4

2 回答 2

2

通常,您不会在代码中直接引用该表。您使用MembershipAPI。

这是一篇很好的文章:在 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" });
    }
}
于 2013-02-13T17:43:42.843 回答
0

我认为这是 EF 处理多对多关系的方式,以下是 2 种解释以及如何使用它们:

http://nileshhirapra.blogspot.in/2012/03/entity-framework-insert-operation-with.html

http://weblogs.asp.net/zeeshanhirani/archive/2008/08/21/many-to-many-mappings-in-entity-framework.aspx

于 2013-04-16T17:47:49.567 回答