首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不加载直线EF6的特性

不加载直线EF6的特性
EN

Stack Overflow用户
提问于 2018-03-05 19:06:20
回答 1查看 20关注 0票数 0

我有一个Request类,它包含一个类型为ApplicationUser的属性CreatedBy

然后,我需要执行一些授权来查看当前用户是否可以访问该请求,如下所示:

代码语言:javascript
复制
public bool HasAccessToRequest(Request req)
{
    var user = GetCurrentUser();

    if (req == null)
    {
        return false;
    }

    if (req.CreatedBy.Department.Managers.Any(x => x.Id == user.Id))
    {
        return true;
    }

    return false;

}

其中,GetCurrentUser()只是作为对象登录到当前的用户。

问题是,当我这样做时,我会得到一个错误:

“对象引用未设置为对象的实例”

这是通过遍历这段代码来验证的,我注意到当断点时,CreatedBy确实没有加载。然后我查看我的db表,那里有一个有效值,所以我再试一次,但是这次等待大约5秒,然后它在悬停时神奇地出现在req参数中。

我没有使用任何类型的async方法,而且在不同的控制器中也有相同的方法,它们工作得很好。对这可能是什么有什么建议吗?据我所知,没有其他代码在我需要等待的情况下运行,我只看到加载需要一段时间,并且没有设置断点,等待就得到了上面的错误。

首先发生这样的事情:

然后在等待2-4秒之后,就会发生这样的情况:

EN

回答 1

Stack Overflow用户

发布于 2018-03-05 19:49:14

看起来我已经禁用了CreatedBy的延迟加载,所以让它:

代码语言:javascript
复制
public virtual ApplicationUser CreatedBy { get; set; }

似乎解决了这个问题。这有点让人困惑,因为我已经完成了这个项目开发的一半以上,而且这个领域以前从来不需要虚拟化,而且工作得很好,我不确定它以后是否会引起潜在的问题。

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

https://stackoverflow.com/questions/49117725

复制
相关文章

相似问题

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