だから私は把握しようとしており、多対多の関係を作るため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
。たとえば、 myにeveryuser
を として追加したい場合、アクションを次のように変更できると想像できます。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 という 2 人のユーザーがいます。
これを機能させるには、どのチュートリアルまたはドキュメントを使用すればよいですか?
* 編集 *
だから私はあなたの提案を試しました(認めますが、私は 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 でモデルのセットアップが欠落している可能性はありますか? プロジェクトは、まさに上記のコードに加えてデフォルトです。)