【问题标题】:EntityFramework: access to disposed closure [duplicate]EntityFramework:访问已处置的闭包
【发布时间】:2014-07-18 08:28:33
【问题描述】:

我正在使用 EntityFramework 5.0 并且我安装了 Resharper。

我有以下代码:

using (var context = DataObjectFactory.CreateCardholdersContext())
{
    var cardholdersWithCards = from cardholders in context.CardholderEntities
                                from cards in context.CardholderCardEntities
                                select new
                                {
                                    Cardholders = cardholders,
                                    Cards = cards
                                };

}

在我的代码的第 2 行,context 下方有一个下划线,并带有警告 access to disposed closure

这是什么意思,我应该如何更改我的代码?

【问题讨论】:

  • hereherehereherehere。您真的在发帖前检查过重复吗?
  • @Default 是的,我在 Google 上搜索了“实体框架访问已处置的闭包”
  • 这有很多重复。在搜索中跳过实体框架,因为它与google.se/search?q=access+to+disposed+closure 无关。即使 SO 喜欢帮助别人,你也应该学会在提问之前通过适当地搜索主题来帮助自己。否则你只是在添加噪音。
  • 同意。应该扩大我的搜索范围

标签: c# .net entity-framework resharper


【解决方案1】:

这是说上下文可能在执行此代码之前已被处理,从而导致错误。

您需要发布更多代码才能知道原因。

【讨论】:

  • 尝试将 ToList() 添加到查询的末尾。这将确保在处理上下文之前完全枚举数据。
  • 重点是,你的代码没问题,只是过于谨慎了。这应该可以解决它。
  • 你能发布 CreateCardholdersContext() 吗?
  • @Beakie 无关紧要,是 using 中的变量导致它,事实上 from 语句可以稍后枚举,即 @ 987654323@(当 context 已被处置时)。我在问题的 cmets 中链接到的多个问题对此进行了解释。就像你说的,Re#只是谨慎而已。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
相关资源
最近更新 更多