C# 实体框架中的关系

C# 实体框架中的关系,c#,sql,asp.net-mvc,entity-framework,C#,Sql,Asp.net Mvc,Entity Framework,您好,我正在使用EntityFramework5和mvc4,正在努力处理EntityFramework之间的关系 我有一个User、Role和UserRole表 模型是在实体框架中创建的 下面是我用来保存用户和角色的代码,但这不起作用 用户和角色对象属性是在传递给此方法之前设置的 public void saveNewUser(User u, Role r) { using (FormValueEntities db = new FormValueEntities()) {

您好,我正在使用EntityFramework5和mvc4,正在努力处理EntityFramework之间的关系

我有一个User、Role和UserRole表 模型是在实体框架中创建的

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

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

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

不要忘记在实体中包含
UserRole
表。只需在设计视图中拖放即可。

不要忘记在实体中包含
UserRole
表。您只需在设计视图中拖放即可。

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

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

db.Users.Add(newUser);

newUser.Roles.Add(r);

db.SaveChanges(); 

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

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

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

db.Users.Add(newUser);

newUser.Roles.Add(r);

db.SaveChanges(); 

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

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

和代码:

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

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

和代码:

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

您可以尝试使用成员资格api:

                    const string adminRole = "Administrator";
                    const string adminUserName = "Admin";
                    WebSecurity.CreateUserAndAccount(adminUserName, "123456", null, false);
                    Roles.CreateRole(adminRole);
                    Roles.AddUsersToRole(new string[] { adminUserName }, adminRole);

您可以尝试使用成员资格api:

                    const string adminRole = "Administrator";
                    const string adminUserName = "Admin";
                    WebSecurity.CreateUserAndAccount(adminUserName, "123456", null, false);
                    Roles.CreateRole(adminRole);
                    Roles.AddUsersToRole(new string[] { adminUserName }, adminRole);

数据库中是否已经存在该用户/角色,还是新用户/角色?你得到了什么错误?它们存在于数据库中,我没有得到任何错误数据只是没有保存在数据库中用户/角色是否已经存在于数据库中,或者它们是新的?你得到了什么错误?它们存在于数据库中,我没有得到任何错误数据只是没有保存在数据库中。我在使用代码时得到这个错误INSERT语句与外键约束“FK\U UserRole\U User”冲突。数据库“FormValue\”表“User.User\”列“UserId”中发生冲突。\r\n语句已终止。好的,我认为它认为您正在尝试添加新用户。看到上面的编辑,你能试试吗?好的,谢谢,这很有效,但它会将角色添加到当前用户,我想创建一个新用户并为其分配一个角色我在使用代码时遇到此错误INSERT语句与外键约束“FK\U UserRole\U User”冲突。数据库“FormValue\”表“User.User\”列“UserId”中发生冲突。\r\n语句已终止。好的,我认为它认为您正在尝试添加新用户。看到上面的编辑,你能试试吗?好的,谢谢,这很有效,但它会将角色添加到当前用户,我想创建一个新用户并为其分配一个角色