2012-11-17 35 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