C# EF Code First不会立即更新集合

C# EF Code First不会立即更新集合,c#,entity-framework,asp.net-mvc-3,ef-code-first,code-first,C#,Entity Framework,Asp.net Mvc 3,Ef Code First,Code First,我先用实体框架代码开发一个ASP.NETMVC3网站。在索引操作中,我从数据库中获取一些TransactionJournal对象,调用一个名为CreateTransactions的方法,基本上,创建一些事务并将它们添加到TransactionJournal中的ICollection中。然后,我保存上下文,然后查询所有事务,然后它们就不存在了!但是,如果我只是刷新页面,我将获得第一次生成的事务,这些事务没有出现,但不是这次生成的事务。这里有很多代码,因此,我将尝试模拟这里重要的部分,以便您可以看到

我先用实体框架代码开发一个ASP.NETMVC3网站。在索引操作中,我从数据库中获取一些TransactionJournal对象,调用一个名为CreateTransactions的方法,基本上,创建一些事务并将它们添加到TransactionJournal中的ICollection中。然后,我保存上下文,然后查询所有事务,然后它们就不存在了!但是,如果我只是刷新页面,我将获得第一次生成的事务,这些事务没有出现,但不是这次生成的事务。这里有很多代码,因此,我将尝试模拟这里重要的部分,以便您可以看到

交易日志的一部分:

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中,您是否调用标记要更新的上下文中的对象

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

CreateTransactions是创建TransactionScope对象还是仅仅是与域相关的东西?您在数据持久性逻辑中使用了事务控制吗?我没有这样做。但它也不起作用。谢谢您的关注。您能发布事务类的代码吗?事务是否具有TransactionJournal的导航属性?伙计,这是事务类中的一个模型错误。我真的很抱歉。我会接受你的回答,你的评论让我明白我把事情搞砸了。@Alaor-为了让这个问题和答案更有帮助,你最好详细说明一下你把事情搞砸了。