2011-07-25 3 views
1

Je viens de NHibernate et je suis assez confus au sujet de la gestion Entity Framework des entités liées.Entity Framework enregistrer encore et encore la même entité liée

J'ai un modèle appelé Post. Chaque poste a un compte d'entité linke, qui indique quel compte a créé le message.

Lorsque je crée un poste, j'utilise le code suivant:

var post = new Post(); 
post.Account = GetAccount(); 
db.Posts.Add(post); 
db.SaveChanges(); 

Qu'est-ce que GetAccount() fait est d'obtenir le compte de l'utilisateur actuel de la base de données basée sur un cookie. Il met également ce cache en cache pour la requête en cours (asp.net) de sorte qu'il n'a pas besoin d'être récupéré plusieurs fois. Maintenant, cela entraîne l'insertion d'un nouveau compte (identique mais avec un nouvel ID) pour chaque publication que j'enregistre. J'ai implémenté Equals et GetHashCode for Account qui auraient suffi pour NHibernate, mais pas pour Entity Framework, n'est-ce pas?

Qu'est-ce qui me manque?

+2

Est-ce que GetAccount utilise le même dbContext que celui qui enregistre le message? –

+0

@feanz Ahh, c'est logique. Non, ils ne l'ont pas fait et maintenant ça marche quand ils le font. Postez une réponse et je la marquerai. –

Répondre

1

Vous devez vous assurer que vous utilisez la même classe DataContext lors de cette opération car elle ne l'enregistrera pas en tant qu'entité existante. C'est pourquoi vous obtenez des comptes répliqués chaque fois que vous enregistrez.

* Voir les commentaires sur la question initiale.

Questions connexes