我正在开发一个使用实体框架代码优先的ASP.NET MVC3网站。在索引操作中,我从数据库中获取了一些TransactionJournal对象,调用了一个名为CreateTransactions()的方法,基本上就是创建一些事务并将它们添加到TransactionJournal的ICollection中。然后,我保存上下文,然后查询所有事务,然后它们就不在那里了!但是如果我只是刷新页面,我将获得第一次生成的事务,这些事务没有出现,但不是这次生成的事务。有很多代码,所以,我将尝试模拟这里的重要部分,以便您可以看到。
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对象中的集合一样。我应该怎么做才能获得这些刚刚创建的事务?
发布于 2011-06-09 11:51:24
在CreateTransactions中,您是否调用了要更新的上下文中的对象?
context.Entry(j).State = EntityState.Modified;https://stackoverflow.com/questions/6286528
复制相似问题