我是否需要同时处置 CRM OrganizationServiceProxy 和 OrganizationServiceContext?

发布于 2024-12-09 05:03:28 字数 512 浏览 0 评论 0原文

OrganizationServiceProxy 和 OrganizationServiceContext 都支持 dispose 方法。我需要将它们都包装在 using 语句中吗?

using (var proxy = GetOrganizationServiceProxy(Constants.OrgName))
{
    using (var context = new OrganizationServiceContext(proxy))
    {
        // Linq Code Here
    }
 }

或者处理上下文关闭是否会正确关闭代理,这意味着只需要这个?

 var proxy = GetOrganizationServiceProxy(Constants.OrgName)
 using (var context = new OrganizationServiceContext(proxy))
 {
     // Linq Code Here
 }

Both the OrganizationServiceProxy and the OrganizationServiceContext support the dispose method. Do I need to wrap both of them in a using statement?

using (var proxy = GetOrganizationServiceProxy(Constants.OrgName))
{
    using (var context = new OrganizationServiceContext(proxy))
    {
        // Linq Code Here
    }
 }

Or will disposing of the context close properly close the proxy, meaning only this is needed?

 var proxy = GetOrganizationServiceProxy(Constants.OrgName)
 using (var context = new OrganizationServiceContext(proxy))
 {
     // Linq Code Here
 }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梨涡 2024-12-16 05:03:28

上下文无法处置代理,因为它无法决定它是否被任何其他对象使用。
如果您查看 OrganizationServiceContext 的 Dispose,您会看到

public void Dispose()
{
  this.Dispose(true);
  GC.SuppressFinalize((object) this);
}

protected virtual void Dispose(bool disposing)
{
  if (!disposing)
    return;
  this.ClearChanges();
}

顺便说一句。您可以将两个 using 语句结合起来

using (var proxy = GetOrganizationServiceProxy(Constants.OrgName))
using (var context = new OrganizationServiceContext(proxy))
{
    // Linq Code Here
}

The context cannot dispose the proxy, as it cannot decide if it is used by any other object.
IF you look into Dispose of OrganizationServiceContext, you'll see

public void Dispose()
{
  this.Dispose(true);
  GC.SuppressFinalize((object) this);
}

protected virtual void Dispose(bool disposing)
{
  if (!disposing)
    return;
  this.ClearChanges();
}

btw. you can combine both using statements

using (var proxy = GetOrganizationServiceProxy(Constants.OrgName))
using (var context = new OrganizationServiceContext(proxy))
{
    // Linq Code Here
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文