2011-07-25 65 views
1

我來自NHibernate,我很困惑實體框架的處理鏈接的實體。實體框架一遍又一遍地保存相同的鏈接實體

我有一個名爲Post的模型。每個帖子都有一個linke實體帳戶,它告訴哪個帳戶創建了該帖子。

當我創建一個帖子,我使用下面的代碼:

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

什麼GetAccount()確實正從基於一個cookie數據庫的當前用戶的帳戶。它也爲當前請求(asp.net)緩存這個數據,所以不需要多次提取。

現在,這會爲我保存的每個帖子插入一個新帳戶(與新ID相同)。我已經實現了Equals和GetHashCode for Account,這對NHibernate來說已經足夠了,但是對於Entity Framework來說不是這樣嗎?

我錯過了什麼?

+2

GetAccount是否使用與保存帖子相同的dbContext? –

+0

@feanz啊,這很有道理。不,他們不這樣做,現在只要他們這樣做就行。發佈答案,我會標記它。 –

回答

1

執行此操作時,您需要確保使用相同的DataContext類,因爲它不會將其註冊爲現有實體。因此,爲什麼每次保存時都要複製帳戶。

*請參閱第一個問題的評論。