WCF 服务中的 EF DbContext
我正在创建一个使用 EF 作为其数据访问 Orm 的应用程序。
我的实体正在丢失其状态,导致每当我保存新实体时,关系中的任何对象都会被标记为新对象并尝试插入。
如何在每个 WCF 调用中实例化一次 DbContext,以便在整个服务调用中使用相同的上下文,并防止它被释放并让我的实体处于不一致的状态?
当我做Web应用程序时,我曾经将上下文存储在HttpContext中,但是在WCF中没有HttpContext这样的东西。
我可以将其存储在哪里以便每次调用时使用?
谢谢!
I am creating an application that uses EF as its data access orm.
My entities are losing its state, causing that whenever I save a new entity, any objects in relationships are marked as new and try to be inserted as well.
How do I instance my DbContext once per WCF call so I use the same context in the whole service call and prevent it from bieng disposed and let my entities with an inconsistent state?
I used to store the context in the HttpContext when I did web apps, but in WCF there is no such thing as HttpContext.
Where can I store it so is used per call?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在 WCF 中使用 HttpContext。
我通常使用 structuralmap 的 HybridHttpOrThreadLocalScoped 将 DbContext 缓存在 HttpContext 中:
这可以使用
HttpContext 手动完成。当前.Items
。我想它可以在纯WCF中以不同的方式完成,但使用aspNetCompatibilityEnabled - imo是可以的。
干杯!
You can use HttpContext in WCF.
I usually cache my DbContext in HttpContext using structuremap's HybridHttpOrThreadLocalScoped:
This can be done manually using
HttpContext.Current.Items
.I suppose it could be done differently in pure WCF but it's ok to use aspNetCompatibilityEnabled - imo.
Cheers!