【发布时间】:2010-11-15 16:26:20
【问题描述】:
我正在尝试复制我们在 EF CTP4 中使用 NHibernate 的许多做法。
目前我们有一个通用的存储库接口(CTP4 实际上使用 DbContext.Set 使这很容易)。
我们正在传递上下文并使用 StructureMap 来根据 HttpRequest 对其进行范围。
使用 NHibernate,我们传入 ISession(再次使用 StructureMap 创建),但使用 ActionFilter (UnitOfWork) 在请求结束时提交事务。
我们在 EF CTP4 中有等效的事务吗?如果没有,我应该使用相同的过滤器来调用 context.SaveChanges() 还是只在存储库中执行此操作。
顺便说一句,测试一个实体是否是新的最简单的方法是什么。使用 NH,我们可以轻松调用 ISession.SaveOrUpdate。请注意,我的所有实体都使用 Guid 标识符。也许检查默认(Guid)?
谢谢。
【问题讨论】:
-
你发现了吗?
-
@Chad,我做了类似于下面帖子的事情。缺点是 EF 不直接公开事务,因此您失去了对 NH 的控制(例如显式回滚事务)。此外,在我的过滤器中使用 System.Transactions 后,我发现 SQLCE 无法做到这一点。
标签: entity-framework-4 ctp4 ef-code-first