コード例 #1
0
        /// <summary>
        /// Gets schemas key columns values.
        /// </summary>
        /// <param name="parameters">Import parameters.</param>
        /// <param name="importEntity">Import entity.</param>
        /// <returns>Schemas key columns values.</returns>
        private SchemasKeyColumnsValues GetSchemasKeyColumnsValues(
            ImportParameters parameters, ImportEntity importEntity)
        {
            var schemasKeyColumnsValues = new SchemasKeyColumnsValues();

            foreach (ImportColumn column in parameters.Columns)
            {
                ImportColumnValue columnValue = importEntity.FindColumnValue(column);
                if (columnValue == null)
                {
                    continue;
                }
                foreach (ImportColumnDestination destination in column.Destinations)
                {
                    Guid schemaUId = destination.SchemaUId;
                    if (schemaUId.Equals(parameters.RootSchemaUId))
                    {
                        continue;
                    }
                    object valueForSave = ColumnsProcessor.FindValueForSave(destination, columnValue);
                    if (valueForSave == null)
                    {
                        continue;
                    }
                    EntitySchema             schema = UserConnection.EntitySchemaManager.GetInstanceByUId(schemaUId);
                    EntitiesKeyColumnsValues entitiesKeyColumnsValues;
                    if (!schemasKeyColumnsValues.TryGetValue(schema, out entitiesKeyColumnsValues))
                    {
                        entitiesKeyColumnsValues = new EntitiesKeyColumnsValues();
                        schemasKeyColumnsValues.Add(schema, entitiesKeyColumnsValues);
                    }
                    int              destinationIndex     = destination.GetIndex();
                    object           attributeColumnValue = destination.FindAttributeColumnValue();
                    string           destinationKey       = string.Concat(destinationIndex, attributeColumnValue);
                    KeyColumnsValues keyColumnsValues;
                    if (!entitiesKeyColumnsValues.TryGetValue(destinationKey, out keyColumnsValues))
                    {
                        keyColumnsValues = new KeyColumnsValues();
                        entitiesKeyColumnsValues.Add(destinationKey, keyColumnsValues);
                    }
                    keyColumnsValues.Add(destination.ColumnName, valueForSave);
                    string attributeColumnName = GetDestinationAttributeColumnName(destination, schema);
                    if (!keyColumnsValues.ContainsKey(attributeColumnName))
                    {
                        keyColumnsValues.Add(attributeColumnName, attributeColumnValue);
                    }
                    EntitySchemaColumn connectionColumn     = importEntity.GetReferenceColumn(schema);
                    string             connectionColumnName = connectionColumn.Name;
                    if (!keyColumnsValues.ContainsKey(connectionColumnName))
                    {
                        Guid primaryColumnValue = importEntity.PrimaryEntity.PrimaryColumnValue;
                        keyColumnsValues.Add(connectionColumnName, primaryColumnValue);
                    }
                }
            }
            return(schemasKeyColumnsValues);
        }
コード例 #2
0
        /// <summary>
        /// Gets entity key columns names.
        /// </summary>
        /// <param name="destination">Import column destination.</param>
        /// <param name="schema">Entity schema.</param>
        /// <param name="importEntity">Import entity.</param>
        /// <param name="destinationValues">Destination values.</param>
        /// <returns>Entity key columns names.</returns>
        private IEnumerable <string> GetEntityKeyColumnsNames(ImportColumnDestination destination, EntitySchema schema,
                                                              ImportEntity importEntity, Dictionary <ImportColumnDestination, object> destinationValues)
        {
            List <string> entityKeyColumnsNames = new List <string> {
                GetDestinationAttributeColumnName(destination, schema)
            };
            EntitySchemaColumn connectionColumn = importEntity.GetReferenceColumn(schema);

            entityKeyColumnsNames.Add(connectionColumn.Name);
            IEnumerable <string> destinationColumnsNames = GetDestinationColumnsNames(destinationValues, destination);

            entityKeyColumnsNames.AddRange(destinationColumnsNames);
            return(entityKeyColumnsNames);
        }