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

Dar*_*ryl 3 dynamics-crm-2011

OrganizationServiceProxy和OrganizationServiceContext都支持dispose方法.我是否需要在using语句中包含它们?

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

或者将处理上下文关闭正确关闭代理,这意味着只需要这样做?

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

cce*_*lar 6

上下文不能处理代理,因为它无法决定它是否被任何其他对象使用.如果你研究一下DisposeOrganizationServiceContext,你会看到

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

protected virtual void Dispose(bool disposing)
{
  if (!disposing)
    return;
  this.ClearChanges();
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句.你可以结合使用语句

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