2012-11-17 37 views
1

我有一个问题,在实体框架实体框架的关系

这里的关系是我的问题:

我有两类:用户和组

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

User.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; } 

} 

Group.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 );),“所有者”参数为空。

任何帮助将非常感激。

非常感谢

+0

是否使用EF代码第一次?或者你在使用EF设计师吗? – deerchao

回答

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>(); 
    } 
} 
0

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

+0

此代码不起作用。 (错误:包含对象组的方法include不存在)试图做Group group = db.Groups.Include(“owner”)。Find(id);但不起作用 – Tang