Exemplo n.º 1
0
        public static bool ValidData(string value, int row, ColumnMapping mapping, IVisualCollection collection, Dictionary<string, IEntityObject> navProperties, List<string> errorList)
        {
            bool bValid = false;
            IEntityType targetEntityType = mapping.TableField.EntityType;

            //Need to grab the entity set and check number of results we get
            IApplicationDefinition appModel = collection.Screen.Details.Application.Details.GetModel();
            IEntityContainerDefinition entityContainerDefinition = (from ecd in appModel.GlobalItems.OfType<IEntityContainerDefinition>()
                                                                    where ecd.EntitySets.Any(es => object.ReferenceEquals(es.EntityType, targetEntityType))
                                                                    select ecd).FirstOrDefault();

            if (entityContainerDefinition == null)
                throw new Exception("Could not find an entity container representing the entity type: " + targetEntityType.Name);

            IEntitySetDefinition entitySetDefinition = (from es in entityContainerDefinition.EntitySets
                                                        where object.ReferenceEquals(es.EntityType, targetEntityType)
                                                        select es).First();

            var dataService = (IDataService)collection.Screen.Details.DataWorkspace.Details.Properties[entityContainerDefinition.Name].Value;
            var entitySet = (IEntitySet)dataService.Details.Properties[entitySetDefinition.Name].Value;
            var dsQuery = entitySet.GetQuery();

            //Search for the matching entity for the relationship IEnumerable<IEntityObject>
            var results = SearchEntityMethodInfo().MakeGenericMethod(dsQuery.ElementType).Invoke(null,
                new object[]
                {
                    dsQuery,
                    value,
                    targetEntityType
                }) as IEnumerable<IEntityObject>;

            int searchCount = results.Count();
            if (searchCount == 0)
            {
                bValid = false;
                errorList.Add(String.Format("Column:{0} Row:{1} Cannot find a matching '{2}' for '{3}'", mapping.OfficeColumn, row, mapping.TableField.DisplayName, value));
            }
            else if (searchCount > 1)
            {
                bValid = true;
                errorList.Add(String.Format("Column:{0} Row:{1} Multiple matching '{2}' for '{3}'.  Will select first match.", mapping.OfficeColumn, row, mapping.TableField.DisplayName, value));
                navProperties[String.Format("{0}_{1}", mapping.TableField.Name, value)] = results.FirstOrDefault();
            }
            else
            {
                bValid = true;
                navProperties[String.Format("{0}_{1}", mapping.TableField.Name, value)] = results.FirstOrDefault();
            }
            return bValid;
        }
Exemplo n.º 2
0
        public static bool ValidData(string value, int row, ColumnMapping mapping, List<string> errorList)
        {
            dynamic convertedValue = null;
            bool isValid = TryConvertValue(mapping.TableField.TypeName, value, ref convertedValue);
            if (isValid == false)
                errorList.Add(String.Format("Column:{0} Row:{1} Cannot convert value({2}) to {3} for '{4}'", mapping.OfficeColumn, row, value, mapping.TableField.TypeName, mapping.TableField.DisplayName));

            return isValid;
        }