Entity framework 4 EF CTP4何时调用context.SaveChanges

Entity framework 4 EF CTP4何时调用context.SaveChanges,entity-framework-4,ctp4,ef-code-first,Entity Framework 4,Ctp4,Ef Code First,我试图复制我们在EF CTP4中与NHibernate一起使用的许多实践 目前,我们有一个通用的存储库接口(CTP4实际上使DbContext.Set变得非常简单) 我们正在传递上下文并使用StructureMap根据HttpRequest对其进行范围限定 使用NHibernate,我们传入ISession(再次使用StructureMap创建),但在请求结束时使用ActionFilter(UnitOfWork)提交事务 我们是否有EF CTP4中的等价交易?如果不是,我应该使用相同的筛选器调用

我试图复制我们在EF CTP4中与NHibernate一起使用的许多实践

目前,我们有一个通用的存储库接口(CTP4实际上使DbContext.Set变得非常简单)

我们正在传递上下文并使用StructureMap根据HttpRequest对其进行范围限定

使用NHibernate,我们传入ISession(再次使用StructureMap创建),但在请求结束时使用ActionFilter(UnitOfWork)提交事务

我们是否有EF CTP4中的等价交易?如果不是,我应该使用相同的筛选器调用context.SaveChanges()还是在存储库中执行此操作

另一方面,测试一个实体是否是新的最简单的方法是什么。有了NH,我们可以轻松地调用ISession.SaveOrUpdate。请注意,我的所有实体都使用Guid标识符。是否检查默认值(Guid)


谢谢。

我知道这是一个迟来的答案,你现在应该已经找到了,但我想这对人们搜索很有用。Rob Conry在使用actionfilter和Ef创建每个请求范围的事务方面发表了一篇很好的文章


哦,是的,我会在一个通用存储库上创建一个UpdateInsert()方法来测试默认值(Guid)。

你明白了吗?@Chad,我做了类似于下面文章的事情。缺点是EF不会直接公开事务,因此您失去了对NH的控制(例如显式回滚事务)。另外,在我的过滤器中使用System.Transactions之后,我发现这在SQLCE中是不可能的。我们最终做了类似的事情,并调用了SaveChanges OnActionExecuted.FYI。链接断开了。