实体框架中的关系

时间:2012-10-15 10:01:39

标签: c# sql asp.net-mvc entity-framework

您好我正在使用Entity framework 5和mvc4并且正在努力实现实体框架关系

我有一个User,Role和UserRole表 SQL Table 该模型在Entity framework

中创建

enter image description here

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

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

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

4 个答案:

答案 0 :(得分:1)

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

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

db.Users.Add(newUser);

newUser.Roles.Add(r);

db.SaveChanges(); 

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

答案 1 :(得分:0)

不要忘记在您的实体中加入UserRole表。您只需将其拖放到设计视图中即可。

答案 2 :(得分:0)

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

代码:

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

答案 3 :(得分: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);