2011-10-11 58 views
3

OrganizationServiceProxy和OrganizationServiceContext都支持dispose方法。我是否需要在使用語句中包裝它們兩個?我是否需要處理CRM OrganizationServiceProxy和OrganizationServiceContext?

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 
} 

回答

6

上下文不能處理代理,因爲它無法確定它是否被任何其他對象使用。 如果單看OrganizationServiceContext的Dispose,你會看到

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

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

BTW。你可以結合使用兩種語句

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

我喜歡double using語句。這是個好主意。假設我可以創建一個「上下文管理器」來處理兩者,如果我真的想要一個使用語句。謝謝! – Daryl

+0

@Daryl肯定你可以創建一些經理類。但是,如果您同時添加這兩個用途,則明確該任務需要哪些依賴關係 – ccellar

相關問題