1

我对实体框架中的关系有疑问

这是我的问题:

我有两个类:用户和组

  • 一个组必须有一个所有者(用户)
  • 一个组可以有0个或多个成员(用户)
  • 一个用户可以是 0 个或多个组的所有者

用户.cs:

    public class User
{
    [Key]
    public int userId { get; set; }


    [Display(Name="Firstname")]
    public string firstname { get; set; }


    [Display(Name = "Lastname")]
    public string lastname { get; set; }


    [Display(Name = "Email")]
    public string email { get; set; }

}

组.cs:

    public class Group
{
    [Key]
    public int idGroup { get; set; }
    public string name { get; set; } 
    public User owner { get; set; }
    public List<User> members { get; set; }

    public Group()
    {
        members = new List<User>();
    }

}

这是插入组功能:

        [HttpPost]
    public ActionResult Create(Group group)
    {
        if (ModelState.IsValid)
        {
            group.owner = db.Users.Attach((User)Session["user"]);
//Current user stored in session and already presents in User table
            db.Groups.Add(group);
            db.SaveChanges();

            return RedirectToAction("Index", "Home");
        }
        return View(group);
    }

问题是 :

  • 当我在插入函数中运行调试时,正确设置了“所有者”属性(在 db.savechanges 处)
  • 但是之后,当我在 db (Group group = db.Groups.Find(id);) 中选择一个组时,“所有者”参数为空。

任何帮助将非常感激。

非常感谢

4

2 回答 2

1

试试这个:

public class Group
{
    [Key]
    public int idGroup { get; set; }
    public string name { get; set; } 
    public virtual User owner { get; set; }
    public virtual ICollection<User> members { get; set; }

    public Group()
    {
        members = new List<User>();
    }
}
于 2012-11-17T17:28:14.197 回答
0

这可能会解决您的问题 Group group = db.Groups.Find(id).Include("owner");

于 2012-11-17T17:21:43.550 回答