2014-05-10 6 views
0

그래서 나는 많은 것을 많은 관계로 만들기 위해 EF6을 파악하려고 노력하고 있으며 Identity 2.0을 사용하고 있습니다. Visual Studio 2013 및 MVC 5 템플릿입니다. 객체에 Identity 2.0 사용자를 추가하는 방법

public class Meeting 
{ 
    public Guid MeetingID { get; set; } 
    public string Title { get; set; } 
    public virtual ICollection<ApplicationUser> Attendees { get; set; } 
} 

public class ApplicationUser : IdentityUser 
{ 
    public ICollection<Meeting> Meetings { get; set; } 
} 

가 그럼 난 Meetings의 컨트롤러와 뷰를 스캐 폴딩 :

나는 다음과 같은 모델과 새로운 MVC 응용 프로그램을 가지고있다.

public ActionResult Create(Meeting meeting) 
{ 
    if (ModelState.IsValid) 
    { 
     meeting.MeetingID = Guid.NewGuid(); 
     db.Users.ForEachAsync(u => meeting.Attendees.Add(u)); 
     db.Meetings.Add(meeting); 
     db.SaveChanges(); 
     return RedirectToAction("Index"); 
    } 
    else... 
} 

내가 그것을 생각하지 않습니다하지만 : 자, 예를 들어, 난 그냥 원한다면 내 meetingattendee으로 모든 user을 추가, 나는 다음과 같이 할 수 Create 조치를 수정할 수 있다고 상상 내 LocalDB에 표시되지 않기 때문에 노력하고 내가 회의에 대한 상세 뷰에 이것을 추가하면 내가 어떤 결과를 얻을 : 최종 참고로

@{foreach (var item in Model.Attendees) 
{ 
    <li>@item.UserName</li> 
}} 

을, 나는 LocalDB 테스트에서 두 명의 사용자를 가지고 test2.

이 튜토리얼 또는 문서를 통해이 작업을 수행 할 수 있습니까?

* 편집 *

그래서 난 당신의 제안 (내가 비동기에 익숙하지 오전 기다리고 그것을 구현하는 방법, 인정한다) 시도, 나는에 저를 허용하는 컨트롤러를 수정했다 사용은 내가 올바르게 지금이 일을하고있어 잘 모르겠어요 그래서 기다리고 있습니다,하지만 난 컴파일하려면 다음 있고 난의 오류 '객체 참조가 개체의 인스턴스로 설정되지 않았습니다'실행 얻을 :

public async Task<ActionResult> Create(Meeting meeting) 
    { 
     if (ModelState.IsValid) 
     { 
      meeting.MeetingID = Guid.NewGuid(); 
      await db.Users.ForEachAsync(u => meeting.Attendees.Add(u)); 
      db.Meetings.Add(meeting); 
      db.SaveChanges(); 

(Entity Framework에서 내 모델의 일부 설정이 누락되었을 수 있습니까? 프로젝트는 위에 표시된 코드와 기본값을 더한 것입니다.) 응용 프로그램은 행복에 계속 저장 await없이

await db.Users.ForEachAsync(u => meeting.Attendees.Add(u)); 

:

당신은 자신 :)

(드럼 롤)을 걷어차려고

답변

1

당신은 당신의 ForEachAsync 행 앞에 await을 추가하는 것을 잊었다 그 레코드는 비동기 프로세스가 완료되기 전에 모두 필요합니다.

UPDATE 당신이 Attendees 수집을 초기화하지 않은 대부분의 경우

. 생성자의 새로운 List<ApplicationUser>으로 설정하면됩니다.

관련 문제