public void ManualMapToTargetColumns()
        {
            if (ExternalColumnInputColumnMap.Count > 0)
            {
                string[] viCols = new string[Input.Input.GetVirtualInput().VirtualInputColumnCollection.Count];
                for (int i = 0; i < viCols.Length; i++)
                {
                    viCols.SetValue(Input.Input.GetVirtualInput().VirtualInputColumnCollection[i].Name, i);
                }

                foreach (ExternalColumnInputMap map in ExternalColumnInputColumnMap)
                {
                    if (String.IsNullOrEmpty(map.InputColumnName))
                    {
                    }
                    else
                    {
                        ISExternalMetadataColumn extCol = new ISExternalMetadataColumn(this, DtsInput.Name, map.ExternalColumn.ExternalColumnName, true);
                        for (int vi = 0; vi < viCols.Length; vi++)
                        {
                            if (string.Equals(viCols[vi], map.InputColumnName, StringComparison.CurrentCultureIgnoreCase))
                            {
                                ISInputColumn ic = new ISInputColumn(this, DtsInput.Name, viCols[vi], UsageType.UT_READONLY);
                                DesignTimeComponent.MapInputColumn(DtsInput.ID, ic.ID, extCol.ID);
                                extCol.DataType  = ic.DataType;
                                extCol.CodePage  = ic.CodePage;
                                extCol.Length    = ic.Length;
                                extCol.Precision = ic.Precision;
                                extCol.Scale     = ic.Scale;
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// This example shows Kingsway Connection generate
        /// </summary>
        public void KingswayConnection()
        {
            if (File.Exists(Constants.StorageFoldePath + @"\" + _ispacFileName + ".ispac"))
            {
                File.Delete(Constants.StorageFoldePath + @"\" + _ispacFileName + ".ispac");
            }

            //  create a project
            ISProject mainProject = new ISProject(Constants.StorageFoldePath + @"\" + _ispacFileName + ".ispac", null);

            //  create a package
            ISPackage package = new ISPackage("ExamplePackage", mainProject);
            //  Create a Source Kinsway connection manager
            CrmSourceComponent crmSourceComponent1 = new CrmSourceComponent();

            ISKingswaySoftCRMConnectionManager crmConnection = new ISKingswaySoftCRMConnectionManager("CrmConnection", mainProject, package);

            crmConnection.ConnectionString        = "";//write connection String
            crmConnection.IgnoreCertificateErrors = true;

            // Create DataFlow
            ISDataFlowTask iSDataFlowTask = new ISDataFlowTask("Data Flow", package);

            //Create Kingsway Soft Source Component
            ISCrmSourceComponent crmSourceComponent = new ISCrmSourceComponent(iSDataFlowTask, "Crm source", crmConnection);

            crmSourceComponent.SourceEntity = "account";
            crmSourceComponent.BatchSize    = 1;
            crmSourceComponent.BatchSize    = 1;


            //Define Output for Source Component
            ISOutput iSOutput = new ISOutput(crmSourceComponent, 0);
            //Define Entity Column for output Name doesn't need to same with crm name
            ISOutputColumn iSOutputColumn = new ISOutputColumn(crmSourceComponent, iSOutput.Name, "name");
            var            datatpye       = Converter.GetSSISDataTypeFromADONetDataType("string", 180);

            iSOutputColumn.SetDataTypeProperties(datatpye);

            //Configure External Metadata for Entity, columnt name must be same with crm
            ISExternalMetadataColumn iSExternalMetadataColumn = new ISExternalMetadataColumn(crmSourceComponent, iSOutput.Name, "name", false);

            iSExternalMetadataColumn.SetDataType(datatpye);
            iSExternalMetadataColumn.AssociateWithOutputColumn("name");



            //Create Destination component
            ISCrmDestination iSCrmDestination = new ISCrmDestination(iSDataFlowTask, "Crm Destination", crmSourceComponent, crmSourceComponent.GetOutputNameFromIndex(0), crmConnection);

            iSCrmDestination.DestinationEntity = "contact";
            iSCrmDestination.ActionType        = (int)KingswaySoft.IntegrationToolkit.DynamicsCrm.CrmDestinationActionType.Create;



            //Create Destination Component Input
            ISInput iSInput = new ISInput(iSCrmDestination, 0);

            //Map Source component output to destination input
            var inputColumn = new ISInputColumn(iSCrmDestination, iSInput.Name, iSOutputColumn.Name, UsageType.UT_READWRITE);
            //Set input metadata
            ISExternalMetadataColumn iSExternalMetadataColumnforInput = new ISExternalMetadataColumn(iSCrmDestination, iSInput.Name, "fullname", true, "name");

            iSExternalMetadataColumnforInput.SetDataType(datatpye);
            //Set Crm type information, Type information must be defined.
            iSExternalMetadataColumnforInput.SetCustomPropertyToExternalMetadataColumn("CrmFieldType", "String");
            iSExternalMetadataColumnforInput.SetCustomPropertyToExternalMetadataColumn("LookupTypes", "");



            mainProject.SaveToDisk();
        }