public/Add-DataSetRelation.ps1
<#PSScriptInfo
.VERSION 1.0.0.0 .GUID b4a4b5b4-9c01-422a-8c9f-29449413ec80 .FILENAME Add-DataSetRelation.ps1 .AUTHOR Hannes Palmquist .AUTHOREMAIL hannes.palmquist@outlook.com .CREATEDDATE 2020-10-30 .COMPANYNAME Personal .COPYRIGHT (c) 2020, Hannes Palmquist, All Rights Reserved #> function Add-DataSetRelation { <# .DESCRIPTION Creates a relationship between to DataTable columns .PARAMETER DataSet Provide the DataSet object .PARAMETER ParentDataTableColumn Provide the DataTable parent column object .PARAMETER ChildDataTableColumn Provide the DataTable child column object .PARAMETER RelationName Provide a name for the relation object .PARAMETER Passtrough If the passthrough parameter is specified this function will return the created relation object .EXAMPLE $CustOrderRel = Add-DataSetRelation -DataSet $DataSet -ParentDataTableColumn $CustomerTable.Columns['CustomerID'] -ChildDataTableColumn $OrderTable.Columns['OrderID'] -RelationName "Rel_CustomerID_OrderID" -PassThrough This command will define a relationship between the customerID column of table customertable and the orderID column of table ordertable #> [CmdletBinding()] # Enabled advanced function support param( [Parameter(Mandatory)] [system.data.Dataset] $DataSet, [Parameter(Mandatory)] [System.Data.DataColumn] $ParentDataTableColumn, [Parameter(Mandatory)] [System.Data.DataColumn] $ChildDataTableColumn, [Parameter(Mandatory)] [string] $RelationName, [switch] $Passtrough ) PROCESS { try { # Support for constrains is currently missing there for it is default disabled. $null = $DataSet.Relations.Add($RelationName, $ParentDataTableColumn, $ChildDataTableColumn, $false) if ($Passtrough) { $DataSet.Relations[$RelationName] } } catch { Write-Error -Message 'Failed to create data relation' -ErrorRecord $_ } } } #endregion |