CreatePolymorphicLookupAttributeRequest Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Contains the data to create a multi-table lookup column.
public ref class CreatePolymorphicLookupAttributeRequest sealed : Microsoft::Xrm::Sdk::OrganizationRequest
[System.Runtime.Serialization.DataContract(Namespace="http://schemas.microsoft.com/crm/2011/Contracts")]
public sealed class CreatePolymorphicLookupAttributeRequest : Microsoft.Xrm.Sdk.OrganizationRequest
[<System.Runtime.Serialization.DataContract(Namespace="http://schemas.microsoft.com/crm/2011/Contracts")>]
type CreatePolymorphicLookupAttributeRequest = class
inherit OrganizationRequest
Public NotInheritable Class CreatePolymorphicLookupAttributeRequest
Inherits OrganizationRequest
- Inheritance
- Attributes
Examples
The following example shows how to use this message. For this sample to work correctly, you must be connected to the server to get an IOrganizationService interface instance.
This static CreatePolymorphicLookupAttributeExample
example method creates a multi-table lookup column named
sample_BankAccountOwnerId
for the sample_BankAccount
table
that can associate the record to an Account
, Contact
, or Lead
record.
/// <summary>
/// Demonstrates creating a multi-table lookup column
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance.</param>
static void CreatePolymorphicLookupAttributeExample(IOrganizationService service)
{
// Solution and language information
string solutionUniqueName = "SolutionName";
string prefix = "sample";
int languageCode = 1033; //English
string referencingTableSchemaName = "sample_BankAccount";
// The tables to make available for the lookup
List<string> tableSchemaNames = new() {
"Account",
"Contact",
"Lead"
};
// A list of relationhip definitions for each table
List<OneToManyRelationshipMetadata> oneToManyRelationships = new();
// Create the relationships for each table
tableSchemaNames.ForEach(tableSchemaName => {
OneToManyRelationshipMetadata relationship = new() {
ReferencedEntity = tableSchemaName.ToLower(),
ReferencingEntity = referencingTableSchemaName.ToLower(),
SchemaName = $"{prefix}_{tableSchemaName}_{referencingTableSchemaName}",
// Controls how the relationship appears in model-driven apps
AssociatedMenuConfiguration = new AssociatedMenuConfiguration
{
Behavior = AssociatedMenuBehavior.UseLabel,
Group = AssociatedMenuGroup.Details,
Label = new Label($"{tableSchemaName}s", languageCode),
Order = 10000
},
// Controls automated behaviors for related records
CascadeConfiguration = new CascadeConfiguration
{
Assign = CascadeType.NoCascade,
Delete = CascadeType.RemoveLink,
Merge = CascadeType.NoCascade,
Reparent = CascadeType.NoCascade,
Share = CascadeType.NoCascade,
Unshare = CascadeType.NoCascade
}
};
// Add the relationship to the list
oneToManyRelationships.Add(relationship);
});
// Define the lookup column
LookupAttributeMetadata lookupColumn = new() {
SchemaName = $"{prefix}_BankAccountOwnerId",
DisplayName = new Label("Bank Account Owner", languageCode),
RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
Description = new Label(
$"Lookup to the {string.Join(",",tableSchemaNames)} tables.",
languageCode)
};
// Prepare the request
CreatePolymorphicLookupAttributeRequest request = new() {
Lookup = lookupColumn,
OneToManyRelationships = oneToManyRelationships.ToArray(),
SolutionUniqueName = solutionUniqueName
};
// Send the request
var response = (CreatePolymorphicLookupAttributeResponse)service.Execute(request);
// Output the details returned:
Console.WriteLine($"Created multi-table lookup column with ID: {response.AttributeId}");
Console.WriteLine("Created relationships with these IDs:");
foreach (Guid id in response.RelationshipIds)
{
Console.WriteLine($"\t{id}");
}
}
The output of the example looks like this:
Created multi-table lookup column with ID: de15898d-88fe-4d82-be5b-104b846edf20
Created relationships with these IDs:
4b240988-9697-ee11-be37-000d3a993550
52240988-9697-ee11-be37-000d3a993550
59240988-9697-ee11-be37-000d3a993550
Remarks
Multi-table lookup type columns allow a user to use a specific table that has multiple one-to-many (1:N) relationships to other tables in the environment. A single lookup type column can refer to multiple other tables. A lookup value submitted to the multi-table type column will be matched to a record in any of the related tables.
Usage
Pass an instance of this class to the Execute(OrganizationRequest) method, which returns an instance of CreatePolymorphicLookupAttributeResponse.
Privileges and Access Rights
To perform this action, the caller must have the system administrator or system customizer security role.
Constructors
CreatePolymorphicLookupAttributeRequest() |
Initializes a new instance of the CreatePolymorphicLookupAttributeRequest class. |
Properties
ExtensionData |
Gets or sets the structure that contains extra data. Optional. (Inherited from OrganizationRequest) |
Item[String] |
Gets or sets the indexer for the |
Lookup |
Gets or sets the lookup column definition that stores a reference to the related row. |
OneToManyRelationships |
Gets or sets the one-to-many relationship definitions for each table that the multi-table lookup column supports. |
Parameters |
Gets or sets the collection of parameters for the request. Required, but is supplied by derived classes. (Inherited from OrganizationRequest) |
RequestId |
Gets or sets the ID of the request. Optional. (Inherited from OrganizationRequest) |
RequestName |
Gets or sets the name of the request. Required, but is supplied by derived classes. (Inherited from OrganizationRequest) |
SolutionUniqueName |
Gets or sets the name of the unmanaged solution to add the multi-table lookup column to. |