Je rencontre quelques problèmes lors de la mise à jour d'une ligne dans ma base de données à l'aide de Linq2Sql.Mise à jour de la ligne de base de données à partir du modèle
À l'intérieur de mon modèle, j'ai deux méthodes de mise à jour et d'enregistrement de mon contrôleur, qui à son tour reçoit un modèle mis à jour de ma vue.
Mes méthodes de modèle comme comme:
public void Update(Activity activity)
{
_db.Activities.InsertOnSubmit(activity);
}
public void Save()
{
_db.SubmitChanges();
}
et le code dans mon contrôleur aime comme:
[HttpPost]
public ActionResult Edit(Activity activity)
{
if (ModelState.IsValid)
{
UpdateModel<Activity>(activity);
_activitiesModel.Update(activity);
_activitiesModel.Save();
}
return View(activity);
}
Le problème que je vais avoir est que ce code insère une nouvelle entrée dans la base de données , même si l'élément de modèle que j'insère-sur-submit contient un champ de clé primaire.
J'ai également essayé de rattacher l'objet de modèle à la source de données mais cela génère une erreur car l'élément existe déjà.
Tous les pointeurs dans la bonne direction seront grandement appréciés.
MISE À JOUR:
J'utilise l'injection de dépendance à instancier mon objet DataContext comme suit:
IMyDataContext _db;
public ActivitiesModel(IMyDataContext db)
{
_db = db;
}
Je peux être complètement incorrect, mais je vais deviner que le problème réside dans la façon dont votre datacontext instancié. – Ahmad
Salut Ahman. Mon contexte de données est instancié à l'aide de DI. Je vais mettre à jour ma question avec le code d'instanciation. –
Bien qu'utilisant DI, quel est le style de vie du datacontext, transitoire, singleton, par-web-request etc. Il se peut que le style de vie par défaut de votre conteneur DI choisi est en vigueur, sauf si vous l'avez spécifié.Je prends une estimation ici :) – Ahmad