관계

2012-10-15 4 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

이미 DB에 존재하거나 그들이 새로운 사용자/역할을 수행을? 어떤 오류가 발생하고 있습니까? –

+0

그들은 DB에 존재하며, 데이터를 DB에 저장하지 않는 에러가 발생하지 않습니다. –

답변

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

먼저 Entity Framework를 업데이트해야합니다.

그리고 코드 :

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 and 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);