我使用实体框架代码首先为一个电子商务网站。我想把篮子放在会议上。我正在使用尼尼微管理DbContext的生命周期,并将其范围设置为每个请求。
我的问题是,因为篮子的生存期是每个会话,但是DbContext的生存期是每个请求--然后篮子不会附加到每个请求的新DbContext实例中。
我可以在每个请求上重新实例化购物篮,但这似乎是相当低的效率,因为它将获取每个请求的所有篮细节。
我可以在每次请求开始时重新附上会议的篮子。据我所见,这似乎是最好的解决办法。
处理这种情况的推荐方法是什么?
我还发现了关于DbContext范围的其他问题/帖子,建议使用IOC容器在每个请求中使用相同的DbContext。不过,我已经在这样做了--我还没有找到一个真正的答案来解决如何将每个请求的DbContext附加到会话状态中的实体的更长的生存期的问题。
发布于 2014-04-06 14:07:19
建议的方法是不将持久性对象存储在篮中,而是存储一些POCOs (普通对象),以便:
附加和重新附加持久性对象可能有效,但是,当您最终拥有一个应用程序服务器群并决定将您的会话持久化到数据库中时,持久性对象将不得不序列化和反序列化,这可能会导致其他子级问题(只要您的会话由inproc会话提供程序持久化,您就不会看到这些问题)。
https://stackoverflow.com/questions/22894561
复制相似问题