【问题标题】:Check if property can be lazy loaded/is available without having to catch an exception检查属性是否可以延迟加载/是否可用,而不必捕获异常
【发布时间】:2013-08-12 14:22:46
【问题描述】:

基本上我希望在需要时加载我的外键属性,即使原始上下文已被释放。

我考虑过编辑属性 getter:

if (Author==null)
{
    //load the author userprofile in a new dbcontext
    Author = loadedAuthor;
}
return Author;

(作者是实体中的外键属性)。

但是,每次我什至尝试检查属性是否为 null 时,都会引发以下异常:

ObjectContext 实例已被释放,不能再使用 用于需要连接的操作。

有没有办法在不捕获异常的情况下检查属性是否“本地可用”?

【问题讨论】:

  • 看起来你的 dbcontext 已经被释放了。你能发布一下你是如何加载的吗?
  • @dumass 我会通过使用新的 dbcontext 来加载作者。问题是如何检查它是否已加载,以便我知道是否应该使用新的 dbcontext 获取它,或者只是从实例本身中选择它。

标签: c# .net database visual-studio entity-framework


【解决方案1】:

有一个名为AuthorReference 的属性具有IsLoaded 属性。您可以使用它来检查您的 Author 引用是否已加载。

【讨论】:

  • 我该如何检查它?你能举个例子吗?我在任何地方都没有看到 AuthorReference。
  • 很抱歉,此解决方案仅适用于 EF4,但不适用于较新的 DbContext。我没有正确阅读您的问题。据我所知,一旦上下文被释放,就无法检查是否加载了引用。
猜你喜欢
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-05
  • 1970-01-01
  • 2012-04-21
  • 2019-05-25
  • 1970-01-01
  • 2018-02-15
相关资源
最近更新 更多