EF CTP4 何时调用 context.SaveChanges
我正在尝试在 EF CTP4 中复制我们在 NHibernate 中使用的许多实践。
目前我们有一个通用的存储库接口(CTP4 实际上使用 DbContext.Set 使这变得非常容易)。
我们传入上下文并使用 StructureMap 来确定每个 HttpRequest 的范围。
使用 NHibernate,我们传入 ISession(再次使用 StructureMap 创建),但使用 ActionFilter (UnitOfWork) 在请求结束时提交事务。
我们在 EF CTP4 中是否有同等交易?如果没有,我应该使用相同的过滤器来调用 context.SaveChanges() 还是只是在存储库中执行此操作。
附带说明一下,测试实体是否是新实体的最简单方法是什么。使用 NH,我们可以只调用 ISession.SaveOrUpdate。请注意,我的所有实体都使用 Guid 标识符。也许检查默认值(Guid)?
谢谢。
I'm trying to replicate many of the practices we use with NHibernate in EF CTP4.
Currently we have a generic repository interface (CTP4 actually makes this quite easy with DbContext.Set).
We are passing in the context and using StructureMap to scope it per HttpRequest.
With NHibernate we pass in ISession (again created using StructureMap) but use an ActionFilter (UnitOfWork) to commit the transaction at the end of the request.
Do we have equivalent transactions in EF CTP4? If not, should I use the same filter to call context.SaveChanges() or just do this inside the repository.
On a side note, what's the easiest way of testing to see whether an entity is new or not. With NH we have the luxury of just calling ISession.SaveOrUpdate. Note that all my entities use a Guid identifier. Perhaps a check for default(Guid)?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我知道这是一个迟到的答案,您现在已经明白了,但我想它对人们搜索很有用。 Rob conery 有一篇关于使用 actionfilter 和 Ef 根据请求范围创建事务的精彩文章。
Rob C 文章
哦,是的,我会创建通用存储库上的 UpdateInsert() 方法,用于测试默认值(Guid)。
I know this is a late answer that you will have figured out by now but i guess its useful for people searching. Rob conery has a great post on using actionfilter and Ef to create transactions per request scope.
Rob C Article
Oh and yes I would create an UpdateInsert() method on a generic repository that test for default(Guid).