ASP.NET MVC 4を使用してWebアプリを構築しようとしていますが、しばらく立ち往生していて、他の投稿では何も役に立ちませんでした。
ユーザーとグループの2つのモデルクラスが関係しています。ユーザーは必要な数のグループに参加でき、グループにはユーザー(メンバー)のリストがあります。ユーザーがグループを作成すると、そのユーザーはこのグループの所有者になります。
私の問題は、新しいグループを作成しようとしている(そして現在のユーザーをこの新しいグループのメンバーリストに追加しようとしている)ときはいつでも、現在のユーザーはもはや彼のメンバーではないため、前のグループが変更されているように見えることです以前に作成されたグループ。
十分に理解できたと思いますが、理解できなかった場合は申し訳ありません(英語は私の母国語ではありません)。
これが私の質問に関連するモデルクラスです:クラスUserProfile:
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual List<Group> Groups { get; set; }
public virtual List<Group> OwnedGroups { get; set; }
}
クラスグループ:
public class Group
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int GroupId { get; set; }
[Required]
public string Name { get; set; }
public string Description { get; set; }
public virtual List<UserProfile> Members { get; set; }
public virtual UserProfile Owner { get; set; }
}
そして、私のメソッドは(GroupControllerで)新しいグループを作成するために使用されました:
[HttpPost]
public ActionResult Create(Group group)
{
if (ModelState.IsValid)
{
UserProfile user = db.UserProfiles.Where(u => u.UserName == User.Identity.Name).FirstOrDefault();
db.Groups.Add(group);
db.SaveChanges();
group.Owner = user;
user.OwnedGroups.Add(group);
user.Groups.Add(group);
group.Members = new List<UserProfile>();
group.Members.Add(user);
db.SaveChanges();
return RedirectToAction("SearchUsersToAddToGroup", new { groupId = group.GroupId });
}
私は何を間違っているのですか?