2011-06-08 30 views
0

我正在開發一個ASP.NET MVC 3網站與實體框架Code-First。發生的事情是,在Index操作中,我從數據庫中獲取一些TransactionJournal對象,調用一個名爲CreateTransactions()的方法,基本上,創建一些事務並將它們添加到TransactionJournal中的ICollection。然後,我保存上下文,然後查詢所有事務,然後他們不在那裏!但是,如果我只是刷新頁面,我會得到第一次生成的事務,但沒有出現,但不是這次的事務。有很多代碼,所以我會試着嘲笑這裏很重要的部分,以便你可以看到。EF代碼優先不立即更新套件

一塊TransactionJournal的:

public class TransactionJournal { 
    public long TransactionJournalID { get; set; } 
    public virtual ICollection<Transaction> Transactions { get; set; } 
    // ... 
} 

一塊指數的作用:

IDbSet<TransactionJournal> journal_dbset = Context.Set<TransactionJournal>(); 
ICollection<TransactionJournal> journals = journal_dbset.Where(...).ToList(); 

foreach(TransactionJournal j in journals) 
    j.CreateTransactions(); // Create some transactions and add it to the Transactions collection 

Context.Commit(); // This actually calls the SaveChanges() method, only 

IDbSet<Transaction> trans_dbset = Context.Set<Transaction>(); 
ICollection<Transaction> trans = trans_dbset.Where(...).ToList(); // The transactions just created are NOT here! But those created in previews Index action calls are! 

這就像如果調用SaveChanges()不立即更新到上下文對象集。我應該怎麼做才能獲得這些剛創建的交易?

+0

CreateTransactions是創建TransactionScope()對象還是隻是您的域相關的東西? – zsong 2011-06-09 17:28:11

+0

@sza,只是域相關的 – Alaor 2011-06-09 22:21:33

+0

您是否在數據持久性邏輯中使用了事務控制? – zsong 2011-06-10 03:07:06

回答

0

在CreateTransactions中,您是否調用過上下文中要更新的對象?

context.Entry(j).State = EntityState.Modified; 
+0

我沒有這樣做。但它也沒有奏效。感謝您的關注。 – Alaor 2011-06-09 21:53:37

+0

您是否能夠發佈Transaction類的代碼?交易是否具有TransactionJournal的導航屬性? – 2011-06-10 04:07:32

+0

Dude,這是Transaction類中的一個模型錯誤。我真的很抱歉。我會接受你的回答,你的評論讓我知道我在搞什麼。 – Alaor 2011-06-11 16:25:37