CreateManyToManyRequest 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 that is needed to create a new Many-to-Many (N:N) table relationship.
public ref class CreateManyToManyRequest sealed : Microsoft::Xrm::Sdk::OrganizationRequest
[System.Runtime.Serialization.DataContract(Namespace="http://schemas.microsoft.com/xrm/2011/Contracts")]
public sealed class CreateManyToManyRequest : Microsoft.Xrm.Sdk.OrganizationRequest
[<System.Runtime.Serialization.DataContract(Namespace="http://schemas.microsoft.com/xrm/2011/Contracts")>]
type CreateManyToManyRequest = class
inherit OrganizationRequest
Public NotInheritable Class CreateManyToManyRequest
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 example also demonstrates how to validate that both tables are eligible to participate in an N:N relationship by using the CanManyToManyRequest class;
/// <summary>
/// Demonstrates creating many-to-many relationship
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance</param>
static void CreateManyToManyExample(IOrganizationService service) {
// Solution and language information
string solutionUniqueName = "SolutionName";
string prefix = "sample";
int languageCode = 1033; //English
// Information for First Table
var tableOneSchemaName = "Account";
var tableOneLogicalName = tableOneSchemaName.ToLower();
var tableOneCollectionSchemaName = "Accounts";
Label tableOneLabel = new(tableOneCollectionSchemaName, languageCode);
// Information for Second Table
var tableTwoSchemaName = "sample_BankAccount";
var tableTwoLogicalName = tableTwoSchemaName.ToLower();
var tableTwoCollectionSchemaName = "sample_BankAccounts";
Label tableTwoLabel = new("Bank Accounts", languageCode);
// Verify both tables are eligible;
bool isTableOneEligible = IsEligible(tableOneLogicalName);
bool isTableTwoElegible = IsEligible(tableTwoLogicalName);
if (isTableOneEligible && isTableTwoElegible)
{
// Create the request
CreateManyToManyRequest request = new() {
IntersectEntitySchemaName = $"{prefix}_" +
$"{tableOneCollectionSchemaName}_" +
$"{tableTwoCollectionSchemaName}",
ManyToManyRelationship =
new ManyToManyRelationshipMetadata() {
SchemaName = $"{prefix}_" +
$"{tableOneCollectionSchemaName}_" +
$"{tableTwoCollectionSchemaName}",
Entity1LogicalName = tableOneLogicalName,
Entity1AssociatedMenuConfiguration =
new AssociatedMenuConfiguration()
{
Behavior = AssociatedMenuBehavior.UseLabel,
Group = AssociatedMenuGroup.Details,
Label = tableOneLabel,
Order = 10000
},
Entity2LogicalName = tableTwoLogicalName,
Entity2AssociatedMenuConfiguration =
new AssociatedMenuConfiguration()
{
Behavior = AssociatedMenuBehavior.UseLabel,
Group = AssociatedMenuGroup.Details,
Label = tableTwoLabel,
Order = 10000
}
},
SolutionUniqueName = solutionUniqueName
};
// Send the request
var response = (CreateManyToManyResponse)service.Execute(request);
// Output relationship ID
Console.WriteLine($"ManyToManyRelationshipId: {response.ManyToManyRelationshipId}");
}
else {
Console.WriteLine("One of these tables can't be in an N:N relationship");
}
// Validates that the table can participate in an N:N relationship
bool IsEligible(string tableLogicalName) {
CanManyToManyRequest request = new() {
EntityName = tableLogicalName
};
var response = (CanManyToManyResponse)service.Execute(request);
return response.CanManyToMany;
}
}
Sample code on GitHub
Create and retrieve table relationships
Remarks
Usage
Pass an instance of this class to the Execute(OrganizationRequest) method, which returns an instance of CreateManyToManyResponse.
Privileges and Access Rights
To perform this action, the caller must have the following privileges that are assigned to the System Administrator and System Customizer roles:
prvReadQuery
Notes for Callers
Constructors
CreateManyToManyRequest() |
Initializes a new instance of the CreateManyToManyRequest class. |
Properties
ExtensionData |
Gets or sets the structure that contains extra data. Optional. (Inherited from OrganizationRequest) |
IntersectEntitySchemaName |
Gets or sets the name of the intersect entity to be created for this entity relationship. Required. |
Item[String] |
Gets or sets the indexer for the |
ManyToManyRelationship |
Gets or sets the definition of the Many-to-Many table relationship to be created. Required. |
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 you want to add this many-to-many entity relationship to. Optional. |