2012-10-15 228 views
1

你好我使用实体框架5和mvc4,并与实体框架关系关系在实体框架

我有一个用户,角色和UserRole的表 SQL Table 该模型在实体框架创建挣扎

enter image description here

这里是我用来保存用户和角色但这并不工作 用户和角色对象属性中的代码被传递给此方法之前被设置

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

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

+0

执行用户/角色存在于数据库已经或者是他们新的?你遇到了什么错误? –

+0

他们存在于数据库中,我没有得到任何错误的数据只是不保存在数据库中 –

回答

1

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

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

db.Users.Add(newUser); 

newUser.Roles.Add(r); 

db.SaveChanges(); 

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

+0

嗨我得到这个错误,当我使用你的代码INSERT语句与FOREIGN KEY约束\“FK_UserRole_User \”冲突。该冲突发生在数据库\“FormValue \”,表\“User.User \”,'UserId'列中。\ r \ n该语句已被终止。 –

+0

好吧,我认为这是想你正在尝试添加一个新用户。看到上面的编辑,你可以试试吗? –

+0

好的谢谢,但它增加了当前用户的角色,我想创建一个新的用户,并为其分配一个角色 –

0

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

0

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

和代码:

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

你刚才发布了与问题完全相同的代码。 –

+0

不同的男人,我不知道他为什么使用u.Add和r.Add –

+0

啊,我明白了,对不起。 –

0

你可以尝试使用成员身份API:

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