J'essaie de faire une mise à jour pour une table en utilisant EF 5.x en utilisant attach. cette table a d'autres champs qui sont requis mais c'est une ligne existante. donc j'essaye de mettre à jour sans aucun fetch. userid est la clé primaire de la table. J'essaie de mettre à jour le statut. mais il envoie un EntityValidationErrors indiquant qu'un mot de passe est requis, ce qui est un autre champ obligatoire mais pas une clé primaire. puisqu'il s'agit d'une mise à jour de la ligne existante, pourquoi devez-vous fournir les champs requis pour la mise à jour?Attacher pour Update Entity Framework
var webUser = new WebUser() { UserId = webUserId, OnlineStatus = (sbyte)status };
using (var dbxupdate = new xEntities())
{
try
{
dbxupdate.WebUsers.Attach(webUser);
dbxupdate.Entry(webUser).State = EntityState.Modified;
dbxupdate.Entry(webUser).Property(x => x.OnlineStatus).IsModified = true;
dbxupdate.SaveChanges();
}
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Property: {0} Error: {1}", validationError.PropertyName, validationError.ErrorMessage);
}
}
}
}
Sur la première ligne, vous créez un nouveau 'webUser' et vous n'en extrayez pas un de la base de données. essayez de définir un point d'arrêt et vérifiez si le mot de passe 'webUser' n'est pas' null'. – Yoav
Je ne voulais pas récupérer les données. puisque j'allais faire une mise à jour et j'ai déjà une clé primaire –