2011-07-25 5 views
1

私はNHibernateから来ています。エンティティフレームワークがリンクエンティティを処理するのはかなり混乱しています。エンティティフレームワークが同じリンクエンティティを何度も保存しています

私はPostというモデルを持っています。各投稿には、どのアカウントが投稿を作成したかを示すlinkeエンティティアカウントがあります。私はポストを作成するとき

、私は次のコードを使用します。

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

は何GetAccount()クッキーに基づいて、データベースから、現在のユーザーのアカウントを取得しているん。また、現在の要求(asp.net)のためにこれをキャッシュして、複数回フェッチする必要はありません。

これで、保存した投稿ごとに新しいアカウント(同じID番号を持つ)が挿入されます。私はEqualsとGetHashCodeをAccount用に実装しましたが、これはNHibernateでは十分だったが、Entity Frameworkでは十分ではなかったでしょうか?

私には何が欠けていますか?

+2

GetAccountは投稿を保存するのと同じdbContextを使用しますか? –

+0

@feanzああ、意味があります。いいえ、彼らはしなかったし、今はそれが動作するときに動作します。回答を投稿すると、それをマークします。 –

答えて

1

この操作を実行するときに、同じDataContextクラスを使用することを確認する必要があります。これは、既存のエンティティとしてこれを登録しないためです。したがって、あなたが保存するたびに複製されたアカウントを取得する理由は何ですか?

*最初の質問についてのコメントを参照してください。

関連する問題