Asp.net mvc 5 如何向对象添加Identity 2.0用户

Asp.net mvc 5 如何向对象添加Identity 2.0用户,asp.net-mvc-5,entity-framework-6,asp.net-identity-2,Asp.net Mvc 5,Entity Framework 6,Asp.net Identity 2,因此,我试图掌握EF6的Identity 2.0来建立多对多关系。它是Visual Studio 2013和MVC 5模板 我有一个全新的MVC应用程序,具有以下型号: 公开课堂会议 { 公共Guid MeetingID{get;set;} 公共字符串标题{get;set;} 公共虚拟ICollection与会者{get;set;} } 公共类应用程序用户:IdentityUser { 公共ICollection会议{get;set;} } 然后我为会议构建了一个控制器和视图。现在,例如,如果

因此,我试图掌握EF6的
Identity 2.0
来建立多对多关系。它是Visual Studio 2013和MVC 5模板

我有一个全新的MVC应用程序,具有以下型号:

公开课堂会议
{
公共Guid MeetingID{get;set;}
公共字符串标题{get;set;}
公共虚拟ICollection与会者{get;set;}
}
公共类应用程序用户:IdentityUser
{
公共ICollection会议{get;set;}
}
然后我为
会议构建了一个控制器和视图
。现在,例如,如果我只想将每个
用户
作为
与会者
添加到我的
会议
,我可以想象我可以修改
创建
操作,如下所示:

公共行动结果创建(会议)
{
if(ModelState.IsValid)
{
meeting.MeetingID=Guid.NewGuid();
ForEachAsync(u=>meeting.attendes.Add(u));
db.会议。添加(会议);
db.SaveChanges();
返回操作(“索引”);
}
其他的
}
但是,我认为它不起作用,因为我在我的
LocalDB
中看不到它,如果我将它添加到会议的详细视图中,我不会得到任何结果:

@{foreach(Model.attendes中的变量项)
{
  • @item.UserName
  • }}
    最后,我在LocalDB中有两个用户test和test2

    什么样的教程或文档可以让我完成这项工作

    *编辑*

    因此,我尝试了您的建议(我承认,我不熟悉async和await以及如何实现它),我不得不修改控制器以允许我使用await,因此我不确定现在是否正确执行了此操作,但我编译了以下内容,并得到了运行时错误“对象引用未设置为对象实例”:

    公共异步任务创建(会议)
    {
    if(ModelState.IsValid)
    {
    meeting.MeetingID=Guid.NewGuid();
    wait db.Users.ForEachAsync(u=>meeting.attendes.Add(u));
    db.会议。添加(会议);
    db.SaveChanges();
    

    (我是否可能缺少实体框架上模型的某些设置?该项目正是上面显示的代码加上默认值。)

    你会自责的:)

    (Drumroll)

    您忘记在
    ForEachAsync
    行之前添加
    wait

    await db.Users.ForEachAsync(u => meeting.Attendees.Add(u));
    
    如果没有
    wait
    ,应用程序将愉快地继续并保存记录,所有这些都将在异步过程完成之前完成

    更新

    很可能您尚未初始化
    与会者
    集合。只需在构造函数中将其设置为新的
    列表