我正在開發一個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()不立即更新到上下文對象集。我應該怎麼做才能獲得這些剛創建的交易?
CreateTransactions是創建TransactionScope()對象還是隻是您的域相關的東西? – zsong 2011-06-09 17:28:11
@sza,只是域相關的 – Alaor 2011-06-09 22:21:33
您是否在數據持久性邏輯中使用了事務控制? – zsong 2011-06-10 03:07:06