首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF DbContext与会话寿命

EF DbContext与会话寿命
EN

Stack Overflow用户
提问于 2014-04-06 13:17:31
回答 1查看 1.4K关注 0票数 0

我使用实体框架代码首先为一个电子商务网站。我想把篮子放在会议上。我正在使用尼尼微管理DbContext的生命周期,并将其范围设置为每个请求。

我的问题是,因为篮子的生存期是每个会话,但是DbContext的生存期是每个请求--然后篮子不会附加到每个请求的新DbContext实例中。

我可以在每个请求上重新实例化购物篮,但这似乎是相当低的效率,因为它将获取每个请求的所有篮细节。

我可以在每次请求开始时重新附上会议的篮子。据我所见,这似乎是最好的解决办法。

处理这种情况的推荐方法是什么?

我还发现了关于DbContext范围的其他问题/帖子,建议使用IOC容器在每个请求中使用相同的DbContext。不过,我已经在这样做了--我还没有找到一个真正的答案来解决如何将每个请求的DbContext附加到会话状态中的实体的更长的生存期的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-06 14:07:19

建议的方法是不将持久性对象存储在篮中,而是存储一些POCOs (普通对象),以便:

  • 可以有效地显示篮子的内容。
  • 仍然包含数据库ID,以便在接受订单时,可以使用IDs检索数据库上下文当前实例中的数据库实体。

附加和重新附加持久性对象可能有效,但是,当您最终拥有一个应用程序服务器群并决定将您的会话持久化到数据库中时,持久性对象将不得不序列化和反序列化,这可能会导致其他子级问题(只要您的会话由inproc会话提供程序持久化,您就不会看到这些问题)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22894561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档