CA2000:在失去作用域之前处理对象



在进行代码分析时,我在一个方法中使用了以下代码对于这段代码

,它给了我以下消息

CA2000在失去作用域之前处理对象"AddressHistory.UpdateFlagInApplicationEntity (bool)",电话System.IDisposable.Dispose on object 'new OrganizationService("Xrm")'在所有引用它之前范围。MasterPortal addreshistory .aspx. cs269

我用using来解决这个问题,但是对于'new OrganizationService '仍然显示这个消息,是不是因为在使用部分我写了两次new关键字,我需要单独声明吗??

请帮我一下

if (applicationDetails.Entities.Count > 0)
{
    Guid applicationId = applicationDetails.Entities[0].Id;
    if (applicationId != null)
    {
        using (var updateContext = new OrganizationServiceContext(new OrganizationService("Xrm")))
        {
            var applicationToupdate = new Entity(ApplicationsEntity.ENTITYNAME) { Id = applicationId };
            applicationToupdate[ApplicationsEntity.SIA_SECTIONCOMPLETEDADDRESSES] = flagValue;
            updateContext.Attach(applicationToupdate);
            updateContext.UpdateObject(applicationToupdate);
            updateContext.SaveChanges();
        }
    }
}

您说您已经在OrganizationService实例中使用了using。只需记住将该实例传递给OrganizationServiceContext构造函数,如下所示:

if (applicationDetails.Entities.Count > 0)
{
    Guid applicationId = applicationDetails.Entities[0].Id;
    if (applicationId != null)
    {
        using (var service = new OrganizationService("Xrm"))
        using (var updateContext = new OrganizationServiceContext(service))
        {
            var applicationToupdate = new Entity(ApplicationsEntity.ENTITYNAME) { Id = applicationId };
            applicationToupdate[ApplicationsEntity.SIA_SECTIONCOMPLETEDADDRESSES] = flagValue;
            updateContext.Attach(applicationToupdate);
            updateContext.UpdateObject(applicationToupdate);
            updateContext.SaveChanges();
        }
    }
}

最新更新