Итак, я пытаюсь понять EF6
и использовать Identity 2.0
для создания отношений "многие ко многим". Это Visual Studio 2013 и шаблон MVC 5.
У меня есть новое приложение MVC со следующими моделями:
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
. Теперь, например, если бы я просто хотел добавить каждое user
как attendee
к моему meeting
, я мог бы изменить действие Create
, чтобы оно выглядело следующим образом:
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...
}
Однако я не думаю, что это работает, потому что я не вижу этого в своем LocalDB
, и если я добавлю это в подробное представление для встречи, я не получу никаких результатов:
@{foreach (var item in Model.Attendees)
{
<li>@item.UserName</li>
}}
В заключение у меня есть два пользователя в LocalDB, test и 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? Проект представляет собой именно тот код, который показан выше, плюс значения по умолчанию.)