Est-ce possible, DbContext.SaveChanges () renvoie 0 mais n'a pas une exception?
J'utilise Entity Framework 4.0. Est-il possible que SaveChanges()
retourne 0 mais ne lance pas d'exception? Par exemple, après l'ajout d'.
Voici mon code:
try
{
_context.CodeProducts.Add(entity);
_context.SaveChanges();
//Shell I control return result from SaveChanges() in here.
//However doesn't throw an exceoption?
return new MethodResponse()
{
ResultText = "Successful",
Type = MethodResponse.ResponseType.Succeed
};
}
catch (OptimisticConcurrencyException exc)
{
throw exc;
}
catch (UpdateException exc)
{
throw exc;
}
catch (Exception exc)
{
throw exc;
}
source d'informationauteur cagin
Vous devez vous connecter pour publier un commentaire.
Selon la documentationla valeur de retour de
DbContext.SaveChanges
estDonc ce que vous voyez n'est possible, quand aucune des entités nécessaires pour être enregistré dans la base de données.
De l'Entity Framework db.SaveChanges() pour les suppressions et les enregistre retourne le nombre de lignes soit effectué. En test à l'aide de Faux-Cadre (talons et cales), cependant, la valeur retournée sera toujours 0. Si il y a une erreur dans l'appel, une exception sera levée. L'implication est que tout appel de méthode en s'appuyant sur une valeur supérieure à zéro retourné à partir de db.SaveChanges pour la confirmation ne peut pas être testé pour la même valeur. Cela peut s'avérer critique lorsqu'une méthode est d'utiliser la db.SaveChanges() valeur de retour d'évaluer le nombre de lignes affectées dans une opération donnée.
Ma réponse n'est pas de mentionner au sujet de
DbContext
mais si quelqu'un est à l'aide deXEntities
et se même problème, vous pouvez essayer:Le problème: