Qu'est-ce que je rate ?(Une entité avec la même identité existe déjà dans cet EntitySet.)

StackOverflow https://stackoverflow.com/questions/3845174

Question

J'utilise des DTO et des convertisseurs dans un scénario de cadre d'entité.Je souhaite mettre à jour une entité.Je mets donc cette déclaration :databasecontext.Tablename(s).Attach(entityobj);Chaque fois qu'il arrive ici, le programme se termine avec cette erreur :An entity with the same identity already exists in this EntitySet.

Je sentais que je pouvais contourner ce problème en disant databasecontext.Tablename(s).Detach(entityobj);avant d'appeler à nouveau Attach.Mais le programme échoue toujours avec l'instruction Attach.

Qu'est-ce que je rate?Quelle méthode dans le contexte de base de données appelle Update dans le service de domaine ?

Était-ce utile?

La solution

Il semble que vous gardez le contexte ouvert pendant que vous faites les modifications.

Dans ce cas, vous n'avez pas besoin de remettre en place l'objet au contexte.

Si vous ouvrez un contexte, obtenir un objet à partir d'un contexte, puis fermez le contexte, apporter quelques modifications à l'objet, puis ouvrez un nouveau contexte. Dans ce cas, vous devez attacher l'objet au contexte.

Autres conseils

La question n'est pas claire.Vous n'avez pas mentionné la durée de vie du contexte de votre base de données et quand avez-vous chargé l'entité dans le contexte.

Mais d'après votre question, je suppose que vous avez chargé l'entité et que vous l'avez transmise quelque part en tant que DTO et que lorsque le DTO est renvoyé, vous utilisez toujours le même contexte.Vous convertissez DTO en entité et vous essayez de l'attacher à nouveau => exception BANG.La même entité ne peut pas être replacée deux fois dans son contexte.Essayez d'utiliser plutôt ObjectContext.ApplyCurrentValues ​​(EF 4.0) ou ApplyPropertyChanges (EF 1.0).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top