【问题标题】:Entity Framework objectcontext ending prematurely实体框架对象上下文过早结束
【发布时间】:2011-01-15 23:33:41
【问题描述】:

您好,我收到错误消息“ObjectContext 实例已被释放,不能再用于需要连接的操作”。当我从 wcf 服务运行一些方法时。它们都使用新的上下文对象,并且大多数都可以正常运行。但是,尽管在我的代码中,具有类似实现的几种方法在上面的几行中成功了,但这个仍然出现上述错误:

public CustomAuthentication.WebService.Application GetApplicationByUrl(string url)
        {
            try
            {
                using (AuthenticationEntities2 auth = new AuthenticationEntities2())
                {
                    Application app = auth.Applications.Where(a => a.Url.Contains(url)).FirstOrDefault();

                return app;
            }
        }
        catch (Exception ex)
        {
            throw new FaultException(ex.Message + "\r\n" + ex.StackTrace + "\r\n" + ex.InnerException);
        }
    }

我最初也从“底层连接已关闭:预期保持活动状态的连接已被服务器关闭”中看到此错误。所以我认为在我的 wcf 服务中序列化对象是一个问题。所以我对服务做了一些跟踪,发现了上面的错误。所以现在相信它的实体相关。有什么想法吗?

【问题讨论】:

    标签: wcf entity-framework entity


    【解决方案1】:

    尝试关闭 ObjectContext 上的延迟加载。很可能您的应用程序包含在序列化期间触发延迟加载的导航属性。

    【讨论】:

    • 宾果游戏。谢谢拉迪斯拉夫。此外,我正在阅读 Lerman 关于 em 的书,她建议在 wcf 操作期间仅使用 poco 来消除许多此类问题。我想知道您对此有何看法?
    • @dave:是的,在 Web 服务中使用 POCO 是可行的方法。但即使使用 POCO,您仍然可以使用延迟加载,因此请注意这一点。
    猜你喜欢
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多