Я занимаюсь разработкой веб-сайта ASP.NET MVC 3 с использованием Entity Framework Code-First.Происходит то, что в действии Index я получаю некоторые объекты TransactionJournal из базы данных, вызываю метод CreateTransactions (), который, в основном, создает некоторые транзакции и добавляет их в ICollection в TransactionJournal.Затем я сохраняю контекст, а затем запрашиваю все транзакции, и тогда их там нет!Но если я просто обновлю страницу, я получу транзакции, сгенерированные в первый раз, которые не появились, но не те, что были в это время.В нем много кода, поэтому я постараюсь смоделировать важные части, чтобы вы могли их увидеть.
Часть TransactionJournal:
public class TransactionJournal {
public long TransactionJournalID { get; set; }
public virtual ICollection<Transaction> Transactions { get; set; }
// ...
}
Частьдействие Index:
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 () не обновлял немедленно наборы в объекте Context.Что я должен сделать, чтобы получить только что созданные транзакции?