2012-11-17 5 views
1

J'ai un problème avec les relations dans l'entité-cadrerelations Entity Framework

Voici mon problème:

J'ai deux classes: l'utilisateur et le groupe

  • Un groupe doit avoir un propriétaire (utilisateur)
  • Un groupe peut avoir 0 ou severals Membres (utilisateur)
  • Un utilisateur peut être le propriétaire du groupe 0 ou severals

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

} 

Et voici la fonction de groupe d'insertion:

 [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); 
    } 

Le problème est:

  • Lorsque j'exécute le débogage dans la fonction d'insertion, l'attribut "owner" est correctement défini (à db.savechanges)
  • Mais après, quand je sélectionne un groupe dans db (Group group = db.Groups.Find (id);), le paramètre "owner" est null.

Toute aide serait vraiment appréciée.

Merci beaucoup

+0

Vous utilisez le code EF Première? Ou utilisez-vous le concepteur EF? – deerchao

Répondre

1

Essayez ceci:

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

Cela pourrait résoudre votre problème Group group = db.Groups.Find(id).Include("owner");

+0

Ce code ne fonctionne pas. (Erreur: la méthode include n'existe pas pour le groupe d'objets) Essayé de faire Group group = db.Groups.Include ("owner"). Find (id); mais ça ne marche pas trop – Tang

Questions connexes