我试图复制EF CTP4中我们使用NHibernate的许多实践。EF CTP4何时调用context.SaveChanges
目前我们有一个通用的知识库接口(CTP4实际上使DbContext.Set非常容易)。
我们正在传递上下文并使用StructureMap来根据HttpRequest对其进行范围。
在NHibernate中,我们传递了ISession(再次使用StructureMap创建),但使用ActionFilter(UnitOfWork)在请求结束时提交事务。
我们在EF CTP4中有相同的交易吗?如果不是,我应该使用相同的过滤器来调用context.SaveChanges(),或者只是在存储库中执行此操作。
请注意,最简单的测试方法是查看一个实体是否是新建的。通过NH,我们可以直接调用ISession.SaveOrUpdate。请注意,我所有的实体都使用Guid标识符。也许检查默认(Guid)?
谢谢。
你知道了吗? – Chad 2011-01-02 14:22:54
@Chad,我做了类似于下面的帖子。缺点是EF不直接公开交易,因此您失去了对NH的控制权(例如明确回滚交易)。另外,在我的过滤器中使用了System.Transactions,我发现这对于SQLCE是不可能的。 – 2011-06-14 07:46:21