Exemplo n.º 1
0
        protected DataFilter CreateDataFilter(IDataObject parentDataObject, string relatedObjectType)
        {
            string objectType = parentDataObject.GetType().Name;

            if (objectType == typeof(GenericDataObject).Name)
            {
                objectType = ((GenericDataObject)parentDataObject).ObjectType;
            }

            DataDictionary dataDictionary = GetDictionary();

            DataObject dataObject = dataDictionary.dataObjects.Find(c => c.objectName.ToLower() == objectType.ToLower());

            if (dataObject == null)
            {
                throw new Exception("Parent data object [" + objectType + "] not found.");
            }

            DataRelationship dataRelationship = dataObject.dataRelationships.Find(c => c.relatedObjectName.ToLower() == relatedObjectType.ToLower());

            if (dataRelationship == null)
            {
                throw new Exception("Relationship between data object [" + objectType +
                                    "] and related data object [" + relatedObjectType + "] not found.");
            }

            List <Expression> expressions = CreateRelatedFilterExpressions(parentDataObject, dataRelationship);

            DataFilter filter = new DataFilter()
            {
                Expressions = expressions
            };

            return(filter);
        }
Exemplo n.º 2
0
        protected DataFilter CreateRelatedDataFilter(DataRow parentDataRow, string relatedTableName)
        {
            DataObject parentDataObject = _dbDictionary.dataObjects.Find(x => x.tableName == parentDataRow.Table.TableName);

            if (parentDataObject == null)
            {
                throw new Exception("Parent data table [" + parentDataRow.Table.TableName + "] not found.");
            }

            DataObject relatedDataObject = _dbDictionary.dataObjects.Find(x => x.tableName == relatedTableName);

            if (relatedDataObject == null)
            {
                throw new Exception("Related data table [" + relatedTableName + "] not found.");
            }

            DataRelationship dataRelationship = parentDataObject.dataRelationships.Find(c => c.relatedObjectName.ToLower() == relatedDataObject.objectName.ToLower());

            if (dataRelationship == null)
            {
                throw new Exception("Relationship between data table [" + parentDataRow.Table.TableName +
                                    "] and related data table [" + relatedTableName + "] not found.");
            }

            DataFilter filter = new DataFilter();

            foreach (PropertyMap propertyMap in dataRelationship.propertyMaps)
            {
                DataProperty parentDataProperty  = parentDataObject.dataProperties.Find(x => x.propertyName.ToLower() == propertyMap.dataPropertyName.ToLower());
                DataProperty relatedDataProperty = relatedDataObject.dataProperties.Find(x => x.propertyName.ToLower() == propertyMap.relatedPropertyName.ToLower());

                Expression expression = new Expression()
                {
                    PropertyName       = relatedDataProperty.propertyName,
                    RelationalOperator = RelationalOperator.EqualTo,
                    Values             = new Values
                    {
                        parentDataRow[parentDataProperty.columnName].ToString()
                    }
                };

                if (filter.Expressions.Count > 0)
                {
                    expression.LogicalOperator = LogicalOperator.And;
                }

                filter.Expressions.Add(expression);
            }

            return(filter);
        }
Exemplo n.º 3
0
        protected List <Expression> CreateRelatedFilterExpressions(IDataObject parentDataObject, DataRelationship dataRelationship)
        {
            List <Expression> expressions = new List <Expression>();

            foreach (PropertyMap propertyMap in dataRelationship.propertyMaps)
            {
                Expression expression = new Expression()
                {
                    PropertyName       = propertyMap.relatedPropertyName,
                    RelationalOperator = RelationalOperator.EqualTo,
                    Values             = new Values
                    {
                        parentDataObject.GetPropertyValue(propertyMap.dataPropertyName).ToString()
                    }
                };

                if (expressions.Count > 0)
                {
                    expression.LogicalOperator = LogicalOperator.And;
                }

                expressions.Add(expression);
            }

            return(expressions);
        }