1

您好我正在使用实体框架 5 和 mvc4 并在实体框架关系中苦苦挣扎

我有一个用户、角色和用户角色表 SQL 表 模型是在实体框架中创建的

在此处输入图像描述

这是我用来保存用户和角色的代码,但这不起作用用户和角色对象属性在传递给此方法之前已设置

public void saveNewUser(User u, Role r)
{
    using (FormValueEntities db = new FormValueEntities())
    {
        u.Roles.Add(r);
        r.Users.Add(u);
        db.SaveChanges();
    }
}

如何创建新用户并同时设置角色?

4

4 回答 4

1

我认为这可能是因为用户和角色未附加到您正在创建的上下文中。所以你需要做这样的事情:

User newUser = new User(){ ... Set proprties ...};

db.Users.Add(newUser);

newUser.Roles.Add(r);

db.SaveChanges(); 

请注意,您不需要明确地在两个方向上添加链接。

于 2012-10-15T10:14:17.527 回答
0

不要忘记将UserRole表格包含在您的实体中。您可以简单地将其拖放到设计视图中。

于 2012-10-15T10:10:55.290 回答
0

首先,您必须更新您的实体框架。

和代码:

public void saveNewUser(User u, Role r)
{
    using (FormValueEntities db = new FormValueEntities())
    {
        db.Role.Add(r);
        db.User.Add(u);
        db.SaveChanges();
    }
}
于 2012-10-15T10:17:09.067 回答
0

您可以尝试使用 Membership api:

                    const string adminRole = "Administrator";
                    const string adminUserName = "Admin";
                    WebSecurity.CreateUserAndAccount(adminUserName, "123456", null, false);
                    Roles.CreateRole(adminRole);
                    Roles.AddUsersToRole(new string[] { adminUserName }, adminRole);
于 2012-10-15T11:15:55.813 回答