Mettre à jour une entité avec un contexte et en insérer une nouvelle dans un autre contexte?

Salutations et merci d’avoir lu mon post ..:

Je mets à jour une entrée (Photo) dans un utilisateur

using (context = new PhotoEntities()) { // ... context.Entry(photo).State = EntityState.Modified; } 

Le problème est que lorsque je sauvegarde cette entrée en utilisant

 success = context.SaveChanges() > 0; if (success) { FeedServices.CreatePhotoFeed(photo); } 

J’ai toujours besoin de connaître le contexte car j’insère un nouveau stream. Donc .. j’ai essayé d’utiliser un contexte différent et je rencontre une erreur qui dit:

 An error occurred while updating the ensortinges. See the inner exception for details.", "ExceptionType":"System.Data.Entity.Infrastructure.DbUpdateException", "StackTrace":" at System.Data.Entity.Internal.InternalContext.SaveChanges()\r\n at System.Data.Entity.Internal.LazyInternalContext.SaveChanges()\r\n at System.Data.Entity.DbContext.SaveChanges()\r\n at ServiceLibrary.Services.FeedServices.CreatePhotoFeed(Photo photo) in c:\\PhotoApp\\ServiceLibrary 

Voici le code qui échoue:

 public static void CreatePhotoFeed(Photo photo) { using (var pcontext = new PhotoEntities()) { // TODO : Guest access handling.,... var sourceUser = UserServices.GetLoggedInUser(); Feed feed = new Feed(); feed.UserId = sourceUser.Id; feed.PhotoId = photo.Id; feed.SourceUsername = sourceUser.Firstname + " " + sourceUser.Lastname; feed.TargetUsername = photo.User.Firstname + " " + photo.User.Lastname; feed.DateCreated = DateTime.UtcNow; feed.Feedtext = "lastet opp et nytt foto"; feed.FeedType = FeedTypeEnum.FeedType.NewPhoto.ToSsortingng(); pcontext.Feeds.Add(feed); // this throws the error pcontext.SaveChanges(); } } 

La réponse à cette question est juste un rappel à moi-même et à tous les autres qui ont des problèmes pour comprendre pourquoi les insertions, les mises à jour, etc. d’Entity Framework échouent sans possibilité évident d’obtenir une erreur spécifique “prête à l’emploi”.

Donc, en faisant des choses comme ça:

 try { pcontext.SaveChanges(); } catch (System.Data.Entity.Core.UpdateException e) { } catch (System.Data.Entity.Infrastructure.DbUpdateException ex) //DbContext { Console.WriteLine(ex.InnerException); } catch (Exception ex) { Console.WriteLine(ex.InnerException); throw; } 

vous pouvez réellement obtenir l’erreur exacte et très spécifique que vous recherchez.

Dans mon cas, j’ai oublié de définir l’incrémentation automatique sur l’identité, ce qui a pour résultat que tous les enregistrements insérés étaient d’ID 0 (zéro).