Je reçois cette erreur chaque fois que j'essaie de rattacher un utilisateur à un groupe (ou de créer un groupe).
Voici le GroupController :
public class GroupsController : Controller
{
private Context db = new Context();
[HttpPost]
public ActionResult Create(Group group)
{
if (ModelState.IsValid)
{
group.owner = db.Users.Attach((User)Session["user"]);
//current user stored in session
db.Groups.Add(group);
db.SaveChanges();
return RedirectToAction("Index", "Home");
}
return View(group);
}
}
La variable Session["user"] est définie à l'ouverture de session, voici le code du AccountController :
public class AccountController : Controller
{
private Context db = new Context();
[HttpPost]
public ActionResult LogOn(LoginTemplate login, string returnUrl)
{
User result = db.Users.Where(m => m.email == login.email).Where(m => m.password == login.password).SingleOrDefault();
if (result != null)
{
Session["logged"] = true;
Session["user"] = result;
return RedirectToAction("Index", "Home");
}
}
}
Voici mon contexte :
public class Context : DbContext
{
public Context() : base("name=myContext")
{
}
private static Context _instance;
public DbSet<User> Users { get; set; }
public DbSet<Group> Groups { get; set; }
//I tried to use this method in order to always get the same context but does not work
public static Context getContext()
{
if (_instance == null)
{
_instance = new Context();
}
return _instance;
}
}
Voici 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; }
public virtual ICollection<Group> membership { get; set;}
}
Voici le fichier group.cs :
public class Group
{
[Key]
public int idGroup { get; set; }
public string name { get; set; }
public User owner { get; set; }
public virtual ICollection<User> members { get; set; }
}
J'ai essayé de faire un "singleton" dans mon Contexte (pour toujours réutiliser le même contexte dans chaque contrôleur) mais quand je fais cela, j'obtiens le message d'erreur "Db closed"...