我想用ASP.NET MVC 4构建一个Web应用程序,但我一直在困难,而且我没有发现其他任何帮助。帖子:ASP.NET MVC 4 - 添加到列表时更新错误的对象
我有两个模型类参与:用户和组。用户可以按他们想要的方式进入多个组,并且一个组拥有用户列表(成员)。当用户创建一个组时,他成为这个组的所有者。
我的问题是,每当我尝试创建一个新组(并将当前用户添加到此新组的成员列表中)时,以前的组似乎会被修改,因为当前用户不再他以前创建的组的成员。
我希望我能够理解,如果不是,我很抱歉(英语不是我的母语)。
这里是模型类相关的我的问题: 类用户配置:
[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 });
}
我在做什么错?
似乎没有工作: 使用此代码,isMember为false(id是我的groupId): var user = db.UserProfiles.SingleOrDefault(u => u.UserName == User.Identity.Name ); Group group = db.Groups.Find(id); var isMember = group.Members.Contains(user)' – 11OClock
你使用延迟加载吗?如果不是那么你应该做一个'db.Groups.Include(“成员”)。找到(id)'成员集合被填充.... –
我不使用延迟加载,但这个集合似乎被填充,因为添加了“group.Members.Add(anotherUser)”的成员出现在集合中。 似乎我有这个多对多关系的问题,因为'user.Groups.Add(group)'不会自动执行'group.Members.Add(user)'... – 11OClock