public virtual IEnumerable Read(Stream response) { String entitySetName = GetEntitSetName(response); response.Position = 0; Db.OeEntitySetMetaAdapter entitySetMetaAdatpter = EntitySetMetaAdapters.FindByEntitySetName(entitySetName); return(ReadImpl(response, entitySetMetaAdatpter)); }
public override Db.OeEntityAsyncEnumerator ExecuteProcedure(Object dataContext, String procedureName, IReadOnlyList <KeyValuePair <String, Object> > parameters, Type returnType) { var dbContext = (T)dataContext; var parameterNameGenerator = dbContext.GetService <IParameterNameGeneratorFactory>().Create(); var sqlHelper = dbContext.GetService <ISqlGenerationHelper>(); var sql = new StringBuilder(procedureName); for (int i = 0; i < parameters.Count; i++) { if (i == 0) { sql.Append(' '); } String name = parameterNameGenerator.GenerateNext(); sqlHelper.GenerateParameterName(sql, name); if (i < parameters.Count - 1) { sql.Append(','); } } Object[] parameterValues = null; if (parameters.Count > 0) { parameterValues = new Object[parameters.Count]; for (int i = 0; i < parameterValues.Length; i++) { parameterValues[i] = parameters[i].Value; } } if (returnType == null) { int count = dbContext.Database.ExecuteSqlCommand(sql.ToString()); return(new Db.OeEntityAsyncEnumeratorAdapter(new[] { (Object)count }, CancellationToken.None)); } var fromSql = (IFromSql)EntitySetMetaAdapters.FindByClrType(returnType); if (fromSql == null) { throw new NotSupportedException("supported only Entity type"); } var query = (IQueryable <Object>)fromSql.FromSql(dataContext, sql.ToString(), parameterValues); return(new Db.OeEntityAsyncEnumeratorAdapter(query, CancellationToken.None)); }
protected Object CreateEntity(ODataResource resource, IReadOnlyList <NavigationPorperty> navigationProperties) { Db.OeEntitySetMetaAdapter entitySetMetaAdapter = EntitySetMetaAdapters.FindByTypeName(resource.TypeName); Object entity = OeEntityItem.CreateEntity(entitySetMetaAdapter.EntityType, resource); Dictionary <PropertyInfo, ODataResourceSetBase> propertyInfos = null; foreach (NavigationPorperty navigationProperty in navigationProperties) { PropertyInfo clrProperty = entitySetMetaAdapter.EntityType.GetProperty(navigationProperty.Name); Object value = navigationProperty.Value; if (navigationProperty.ResourceSet == null || (navigationProperty.ResourceSet.Count == null && navigationProperty.ResourceSet.NextPageLink == null)) { clrProperty.SetValue(entity, value); continue; } if (value == null && navigationProperty.ResourceSet.NextPageLink != null) { value = CreateCollection(clrProperty.PropertyType); } clrProperty.SetValue(entity, value); if (value is IEnumerable collection) { NavigationProperties.Add(collection, navigationProperty.ResourceSet); if (propertyInfos == null) { propertyInfos = new Dictionary <PropertyInfo, ODataResourceSetBase>(navigationProperties.Count); NavigationPropertyEntities.Add(entity, propertyInfos); } propertyInfos.Add(clrProperty, navigationProperty.ResourceSet); } } return(entity); }
public override OeEntitySetAdapter GetEntitySetAdapter(String entitySetName) { return(new OeEntitySetAdapter(EntitySetMetaAdapters.FindByEntitySetName(entitySetName), this)); }
public IEnumerable <T> Read <T>(Stream response) { Db.OeEntitySetMetaAdapter entitySetMetaAdatpter = EntitySetMetaAdapters.FindByClrType(typeof(T)); return(ReadImpl(response, entitySetMetaAdatpter).Cast <T>()); }