EF Code-First не обновляет наборы немедленно - PullRequest
0 голосов
/ 09 июня 2011

Я занимаюсь разработкой веб-сайта 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.Что я должен сделать, чтобы получить только что созданные транзакции?

1 Ответ

0 голосов
/ 09 июня 2011

В CreateTransactions вы делали вызов, чтобы пометить объект в контексте, который будет обновлен?

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