Je commence tout juste à travailler avec LINQ, et je suis assez familier avec MVC. J'ai une vue fortement typée qui met à jour un enregistrement. Je l'ai fait avec succès une création:Problème de liaison de modèle dans LINQ to SQL
Cela fonctionne bien, et crée un enregistrement dans la base de données:
public ActionResult Create(TABLEMODEL tableModel)
{
DBDataContext db = new DBDataContext();
if (ModelState.IsValid)
{
db.TABLEMODEL.InsertOnSubmit(tableModel);
db.SubmitChanges();
}
}
Mais en essayant de mettre à jour:
public ActionResult Manage(TABLEMODEL tableModel)
{
DBDataContext db = new DBDataContext();
if (ModelState.IsValid)
{
db.SubmitChanges();
}
}
Cela échoue, dans le sens où il ne met pas à jour l'enregistrement dans la base de données. Aucune erreur/exception réelle ne se produit, et je peux passer à travers cela très bien.
Je suis sûr qu'il me manque quelque chose, mais je ne trouve pas quoi. J'apprécie toute aide à ce sujet.
MISE À JOUR
J'ai remarqué que si je reçois un enregistrement en utilisant le DataContext:
DBDataContext db = new DBDataContext();
var m = db.TABLEMODELs.Single(m => m.ID == 1);
m.Name = "UpdatedName";
db.SubmitChanges();
Cela ne mise à jour, donc je suppose que je suis en quelque sorte pas de mon modèle de fixation au contexte LINQ.
Ma solution
Je trouve que vous devez récupérer l'objet, puis mettre à jour que la forme. Assez simple.
[HttpPost]
public ActionResult Manage(int ID, FormCollection form)
{
DBSDataContext db = new DBSDataContext();
var t= db.TABLEMODELs.Single(b => b.ID == ID);
UpdateModel(t);
if (ModelState.IsValid)
{
db.SubmitChanges();
}
return View(t);
}
Quel est le message d'erreur? Qu'est ce qui échoue? Le code compile et s'exécute mais aucune mise à jour n'est faite dans la base de données? –
Aucune erreur, ne pas commettre. Question éditée pour refléter ceci. Merci –