Asp.net mvc 5 如何向对象添加Identity 2.0用户
因此,我试图掌握EF6的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;} } 然后我为会议构建了一个控制器和视图。现在,例如,如果
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
,应用程序将愉快地继续并保存记录,所有这些都将在异步过程完成之前完成
更新
很可能您尚未初始化与会者
集合。只需在构造函数中将其设置为新的列表