J'essaie de mettre à jour une entité à l'aide d'un stub. Cela fonctionne très bien pour changer les enregistrements, à moins que j'essaie de redéfinir la valeur à la valeur par défaut pour la colonne. Par exemple: Si la valeur par défaut est 0, je peux changer de et vers n'importe quelle valeur sauf zéro, mais les changements ne sont pas sauvegardés si j'essaie de le remettre à zéro. Voici le code que je utilise:Entity Framework: Retour à la valeur par défaut
var package = new Package() {
PackageID = 4
};
...
public static void EditPackage(Package package) {
using(var context = new ShopEntities()) {
context.Packages.MergeOption = MergeOption.NoTracking;
var existing = new Package() {
PackageID = package.PackageID
};
context.AttachTo("Packages", existing);
context.ApplyPropertyChanges("ShopEntities.Packages", package);
context.AcceptAllChanges(); // doesn't make a difference
System.Diagnostics.Debug.WriteLine((package.DateSent.HasValue ? package.DateSent.Value.ToString("D") : "none") + "\t\t" + package.IsReceived);
context.SaveChanges();
}
}
Dans l'exemple ci-dessus, la valeur par défaut de DateSent est nulle (Il est un DateTime?), Et je peux également le mettre à une valeur autre que nulle, et la ligne de débogage confirme que les propriétés correctes sont définies, elles ne sont simplement pas sauvegardées. Je pense que je dois manquer quelque chose.
Merci pour toute aide.
La méthode que j'utilise fonctionne pour les modifications de toute valeur autre que la valeur par défaut. Je pense que c'est parce que l'objet est détaché le re-attaché, mais il a été discuté à http://stackoverflow.com/questions/1612655/entity-framework-updating-with-related-entity – Echilon