所以我试图掌握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
. 现在,例如,如果我只想将 everyuser
作为 an添加attendee
到 mymeeting
中,我想我可以修改该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。
什么教程或文档可以让我完成这项工作?
* 编辑 *
所以我尝试了你的建议(我承认,我不熟悉 async 和 await 以及如何实现它),我不得不修改控制器以允许我使用 await 所以我不确定我是否在做现在这是正确的,但是我得到了以下要编译的内容,并且出现“对象引用未设置为对象的实例”的运行时错误:
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 上缺少我的模型的一些设置?该项目正是上面显示的代码加上默认值。)