Exemplo n.º 1
0
        private ObjectGraphType CreateQuery()
        {
            var entityFields = new List <FieldType>(_dataAdapter.EntitySetAdapters.Count);

            foreach (Db.OeEntitySetAdapter entitySetAdapter in _dataAdapter.EntitySetAdapters)
            {
                Type entitySetResolverType = typeof(OeEntitySetResolver <>).MakeGenericType(entitySetAdapter.EntityType);
                var  entitySetResolver     = (IFieldResolver)entitySetResolverType.GetConstructors()[0].Invoke(new Object[] { _dataAdapter, _edmModel });

                FieldType entityField = new FieldType()
                {
                    Name         = entitySetAdapter.EntitySetName,
                    Resolver     = entitySetResolver,
                    ResolvedType = _graphTypeBuilder.CreateListGraphType(entitySetAdapter.EntityType)
                };

                entityFields.Add(entityField);
            }

            var query = new ObjectGraphType();

            foreach (FieldType entityField in entityFields)
            {
                _graphTypeBuilder.AddNavigationProperties(entityField);
                query.AddField(entityField);
            }
            return(query);
        }
        private static List <FieldType> CreateEntityFields(IEdmModel edmModel, OeGraphTypeBuilder graphTypeBuilder)
        {
            Db.OeDataAdapter dataAdapter = edmModel.GetDataAdapter(edmModel.EntityContainer);
            var entityFields             = new List <FieldType>(dataAdapter.EntitySetAdapters.Count);

            foreach (Db.OeEntitySetAdapter entitySetAdapter in dataAdapter.EntitySetAdapters)
            {
                FieldType entityField = new FieldType()
                {
                    Name         = entitySetAdapter.EntitySetName,
                    Resolver     = new OeEntitySetResolver(edmModel),
                    ResolvedType = graphTypeBuilder.CreateListGraphType(entitySetAdapter.EntityType)
                };

                entityFields.Add(entityField);
            }
            return(entityFields);
        }