示例#1
0
        private ColumnValue BuildColumnValue(Type entityType, string columnName)
        {
            var entityName = _entities.GetNameForType(entityType);
            var entityInfo = _entities[entityName];

            return(ToColumnValue(entityInfo, columnName));
        }
        private void RecurseCreation(object item, EntityInfoCollection <EntityInfo> entities)
        {
            Random rand       = new Random(DateTime.Now.Millisecond * DateTime.Now.Minute);
            string entityName = entities.GetNameForType(item.GetType());

            if (entities.HasEntity(entityName) && entities[entityName].References.Count > 0)
            {
                object primarykey = entities[entityName].Fields.KeyField.PropertyInfo.GetValue(item, null);
                foreach (var refentity in entities[entityName].References)
                {
                    if (this._stopGenerator)
                    {
                        break;
                    }
                    var             genType   = typeof(List <>).MakeGenericType(refentity.ReferenceEntityType);
                    var             items     = (System.Collections.IList)Activator.CreateInstance(genType);
                    Model.modelbase reference = (Model.modelbase)Activator.CreateInstance(refentity.ReferenceEntityType);
                    int             iCount    = rand.Next(this._config.GenerateChildrenBaseAmount);
                    for (int i = 0; i < iCount; i++)
                    {
                        if (this._stopGenerator)
                        {
                            break;
                        }
                        var newelement = reference.CreateRandomObject(primarykey);
                        AddMessage(newelement.ToString());
                        items.Add(newelement);
                        //this._DataStore.Insert(newelement);
                        RecurseCreation(newelement, entities);
                    }
                    if (refentity.IsArray)
                    {
                        var arr = Array.CreateInstance(refentity.ReferenceEntityType, items.Count);
                        items.CopyTo(arr, 0);
                        refentity.PropertyInfo.SetValue(item, arr, null);
                    }
                    else if (refentity.IsList)
                    {
                        refentity.PropertyInfo.SetValue(item, items, null);
                    }
                    else
                    {
                        refentity.PropertyInfo.SetValue(item, items[0], null);
                    }
                }
            }
        }
示例#3
0
        public IFilter GetColumnName(MemberExpression body)
        {
            if (body == null)
            {
                throw new ArgumentNullException("memberExpression");
            }

            var entityName        = _entityInfos.GetNameForType(typeof(T));
            var entityInfo        = _entityInfos[entityName];
            var property          = body.Member;
            var requestedProperty = entityInfo.GetField(property);

            if (requestedProperty == null)
            {
                throw new NotSupportedException(string.Format("Type doesn't contains member expression property. Requested type:{0}. Property name:{1}.", typeof(T), property.Name));
            }

            return(_filterFactory.ToColumnValue(entityInfo, requestedProperty.FieldName));
        }
 private void RecurseCreation(object item, EntityInfoCollection<EntityInfo> entities)
 {
     Random rand = new Random(DateTime.Now.Millisecond * DateTime.Now.Minute);
     string entityName = entities.GetNameForType(item.GetType());
     if (entities.HasEntity(entityName) && entities[entityName].References.Count > 0)
     {
         object primarykey = entities[entityName].Fields.KeyField.PropertyInfo.GetValue(item, null);
         foreach (var refentity in entities[entityName].References)
         {
             if (this._stopGenerator) break;
             var genType = typeof(List<>).MakeGenericType(refentity.ReferenceEntityType);
             var items = (System.Collections.IList)Activator.CreateInstance(genType);
             Model.modelbase reference = (Model.modelbase)Activator.CreateInstance(refentity.ReferenceEntityType);
             int iCount = rand.Next(this._config.GenerateChildrenBaseAmount);
             for (int i = 0; i < iCount; i++)
             {
                 if (this._stopGenerator) break;
                 var newelement = reference.CreateRandomObject(primarykey);
                 AddMessage(newelement.ToString());
                 items.Add(newelement);
                 //this._DataStore.Insert(newelement);
                 RecurseCreation(newelement, entities);
             }
             if (refentity.IsArray)
             {
                 var arr = Array.CreateInstance(refentity.ReferenceEntityType, items.Count);
                 items.CopyTo(arr, 0);
                 refentity.PropertyInfo.SetValue(item, arr, null);
             }
             else if (refentity.IsList)
             {
                 refentity.PropertyInfo.SetValue(item, items, null);
             }
             else
             {
                 refentity.PropertyInfo.SetValue(item, items[0], null);
             }
         }
     }
 }