【问题标题】:EF CTP4 when to call context.SaveChangesEF CTP4 何时调用 context.SaveChanges
【发布时间】: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


【解决方案1】:

我知道这是一个较晚的答案,您现在已经知道了,但我想它对人们搜索很有用。 Rob conery 有一篇关于使用 actionfilter 和 Ef 为每个请求范围创建事务的好帖子。

Rob C Article

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

【讨论】:

  • 我们最终做了类似的事情并调用了 SaveChanges OnActionExecuted。
  • 仅供参考,链接已损坏。
猜你喜欢
  • 1970-01-01
  • 2015-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多