WCF 服务中的 EF DbContext

发布于 2024-12-09 10:34:53 字数 284 浏览 1 评论 0原文

我正在创建一个使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

红颜悴 2024-12-16 10:34:53

您可以在 WCF 中使用 HttpContext。

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

我通常使用 structuralmap 的 HybridHttpOrThreadLocalScoped 将 DbContext 缓存在 HttpContext 中:

For<IDbContext>().HybridHttpOrThreadLocalScoped().Use(() => new MyDbContext());

这可以使用 HttpContext 手动完成。当前.Items

我想它可以在纯WCF中以不同的方式完成,但使用aspNetCompatibilityEnabled - imo是可以的。

干杯!

You can use HttpContext in WCF.

<system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

I usually cache my DbContext in HttpContext using structuremap's HybridHttpOrThreadLocalScoped:

For<IDbContext>().HybridHttpOrThreadLocalScoped().Use(() => new MyDbContext());

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!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文