IOrganizationService.Disassociate Method

Applies To: Microsoft Dynamics CRM 2013, Microsoft Dynamics CRM Online

Deletes a link between records.

Namespace: Microsoft.Xrm.Sdk
Assembly: Microsoft.Xrm.Sdk (in Microsoft.Xrm.Sdk.dll)

Syntax

'Declaration
<OperationContractAttribute> _
<FaultContractAttribute(GetType(OrganizationServiceFault))> _
Sub Disassociate ( _
    entityName As String, _
    entityId As Guid, _
    relationship As Relationship, _
    relatedEntities As EntityReferenceCollection _
)
[OperationContractAttribute] 
[FaultContractAttribute(typeof(OrganizationServiceFault))] 
void Disassociate (
    string entityName,
    Guid entityId,
    Relationship relationship,
    EntityReferenceCollection relatedEntities
)

Parameters

  • entityName
    Type: String. The logical name of the entity that is specified in the entityId parameter.
  • entityId
    Type: Guid. The ID of the record from which the related records are disassociated.
  • relationship
    Type: Relationship. The name of the relationship to be used to remove the link.
  • relatedEntities
    Type: EntityReferenceCollection. A collection of entity references (references to records) to be disassociated.

Example

The following example demonstrates how to use the Disassociate method to remove an association or link between records (early bound).

// Associate the accounts to the contact record.

// Create a collection of the entities that will be 
// associated to the contact.
EntityReferenceCollection relatedEntities = new EntityReferenceCollection();
relatedEntities.Add(new EntityReference(Account.EntityLogicalName, _account1Id));
relatedEntities.Add(new EntityReference(Account.EntityLogicalName, _account2Id));
relatedEntities.Add(new EntityReference(Account.EntityLogicalName, _account3Id));

// Create an object that defines the relationship between the contact and account.
Relationship relationship = new Relationship("account_primary_contact");


//Associate the contact with the 3 accounts.
_service.Associate(Contact.EntityLogicalName, _contactId, relationship,
    relatedEntities);

Console.WriteLine("The entities have been associated.");

//Disassociate the records.
_service.Disassociate(Contact.EntityLogicalName, _contactId, relationship,
    relatedEntities);
' Associate the accounts to the contact record.

' Create a collection of the entities that will be 
' associated to the contact.
Dim relatedEntities As New EntityReferenceCollection()
relatedEntities.Add(New EntityReference(Account.EntityLogicalName, _account1Id))
relatedEntities.Add(New EntityReference(Account.EntityLogicalName, _account2Id))
relatedEntities.Add(New EntityReference(Account.EntityLogicalName, _account3Id))

' Create an object that defines the relationship between the contact and account.
Dim relationship As New Relationship("account_primary_contact")


'Associate the contact with the 3 accounts.
_service.Associate(Contact.EntityLogicalName, _contactId, relationship, relatedEntities)

Console.WriteLine("The entities have been associated.")

'Disassociate the records.
_service.Disassociate(Contact.EntityLogicalName, _contactId, relationship, relatedEntities)

The following example demonstrates how to use the Disassociate method to remove an association or link between records (late bound).

// The account ID would typically be passed in as an argument or determined by a query.
// The contact ID would typically be passed in as an argument or determined by a query.
// Associate the accounts to the contact record.

//Create a collection of the entity ids that will be associated to the contact.
EntityReferenceCollection relatedEntities = new EntityReferenceCollection();
relatedEntities.Add(new EntityReference("account", _account1Id));
relatedEntities.Add(new EntityReference("account", _account2Id));
relatedEntities.Add(new EntityReference("account", _account3Id));

// Create an object that defines the relationship between the contact and account.
Relationship relationship = new Relationship("account_primary_contact");

//Associate the contact with the 3 accounts.
_service.Associate("contact", _contactId, relationship, relatedEntities);

Console.WriteLine("The entities have been associated.");

//Disassociate the records.
_service.Disassociate("contact", _contactId, relationship, relatedEntities);
' The account ID would typically be passed in as an argument or determined by a query.
' The contact ID would typically be passed in as an argument or determined by a query.
' Associate the accounts to the contact record.

'Create a collection of the entity ids that will be associated to the contact.
Dim relatedEntities As New EntityReferenceCollection()
relatedEntities.Add(New EntityReference("account", _account1Id))
relatedEntities.Add(New EntityReference("account", _account2Id))
relatedEntities.Add(New EntityReference("account", _account3Id))

' Create an object that defines the relationship between the contact and account.
Dim relationship As New Relationship("account_primary_contact")

'Associate the contact with the 3 accounts.
_service.Associate("contact", _contactId, relationship, relatedEntities)

Console.WriteLine("The entities have been associated.")

'Disassociate the records.
_service.Disassociate("contact", _contactId, relationship, relatedEntities)

Remarks

Message Availability

This message works regardless whether the caller is connected to the server or offline.

Privileges and Access Rights

To perform this action, the caller must have privileges on the entity that is specified in the entityName parameter and access rights on the records that are specified in the entityId and relatedEntities parameters. For a list of the required privileges, see Disassociate Privileges.

Notes for Callers

This method removes multiple associations in one transaction between the record that is specified by the entityId parameter and each record in the relatedEntities parameter for the relationship that is specified in the relationship parameter.

For a one-to-many relationship, this method clears the ReferencingAttribute in the related record to the value of entityId.

For a many-to-many relationship, this method deletes a record in the intersect table for the relationship. The intersect table name is defined in the IntersectEntityName property for the relationship. You need this when you query for the records. However, you need the relationship name to set the Relationship property. This name is defined in the SchemaName property for the relationship.

For more information about the exceptions that can be thrown when this method is called, see Handle Exceptions in Your Code.

Supported Entities

You can use this method to disassociate any records that participate in a relationship, including records for custom entities.

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Platforms

Development Platforms

Windows Server 2008, Windows Server 2012, Windows 7 (All Versions), Windows 8 (All Versions)

Target Platforms

Windows Server 2008, ,Windows Server 2012, ,Windows 7 (All Versions),

Change History

See Also

Reference

IOrganizationService Interface
IOrganizationService Members
Microsoft.Xrm.Sdk Namespace
DisassociateRequest
DisassociateResponse
Entity Metadata
Disassociate

Other Resources

Sample: Associate (Early Bound)
Customize Entity Relationship Metadata
Handle Exceptions in Your Code
Troubleshooting and Error Handling

Send comments about this topic to Microsoft.
© 2013 Microsoft Corporation. All rights reserved.