示例#1
0
        /// <summary>
        /// Get the exact entity with the id.
        /// </summary>
        /// <param name="id">The entity id.</param>
        /// <returns>A OdataObject<T, TId> object contain the single entity with the id provided.</returns>
        public virtual OdataObject <TEntity, TId> Get(string id)
        {
            var entity = Service.Get(id.To <TId>())?.ToConcrete <TEntity, TInterface>().AsOdata <TEntity, TId>(RequestUri);

            RelatedEntityFetcher.Fetch(new[] { entity }, UrlParameters);
            return(entity);
        }
示例#2
0
        /// <summary>
        /// Creates one or more (an array) of entities.
        /// </summary>
        /// <param name="entities">The list of entities to create</param>
        /// <returns>The created entities.</returns>
        public virtual OdataObjectCollection <TEntity, TId> Post(List <TEntity> entities)
        {
            var createdEntities = Service.Add(entities.ToList <TInterface>()).ToConcrete <TEntity, TInterface>().ToList().AsOdata <TEntity, TId>(RequestUri);

            RelatedEntityFetcher.Fetch(createdEntities, UrlParameters);
            return(createdEntities);
        }
示例#3
0
        /// <summary>
        /// Get a list of Entities where the Entity id is in the list of ids provided.
        /// </summary>
        /// <param name="ids"></param>
        /// <returns>A List{OdataObject{T}} of entities where each is wrapped in an Odata object.</returns>
        public virtual OdataObjectCollection <TEntity, TId> GetByIds(List <TId> ids)
        {
            var entities = Service.Get(ids)?.ToConcrete <TEntity, TInterface>().AsOdata <TEntity, TId>(RequestUri);

            RelatedEntityFetcher.Fetch(entities, UrlParameters);
            return(entities);
        }
        /// <inheritdoc />
        public OdataObjectCollection <TEntity, TId> GetByE2Ids(List <TE2Id> ids)
        {
            var propertyName = typeof(TEntity).GetMappedEntity2Property();
            var lambda       = propertyName.ToLambda <TEntity, TE2Id>(ids);
            var entities     = Service.Get(lambda)?.ToConcrete <TEntity, TInterface>().ToList().AsOdata <TEntity, TId>(RequestUri);

            RelatedEntityFetcher.Fetch(entities, UrlParameters);
            return(entities);
        }
示例#5
0
 /// <summary>
 /// Gets all entities.
 /// Note: Be careful using this on entities that are extremely large in quantity.
 /// </summary>
 /// <returns>List{OdataObject{T}} containing all entities</returns>
 public virtual OdataObjectCollection <TEntity, TId> GetAll()
 {
     if (UrlParameters.Count > 0)
     {
         var entities = Service.Get(UrlParameters)?.ToConcrete <TEntity, TInterface>().ToList().AsOdata <TEntity, TId>(RequestUri);
         RelatedEntityFetcher.Fetch(entities, UrlParameters);
         return(entities);
     }
     return(Service.Get()?.ToConcrete <TEntity, TInterface>().ToList().AsOdata <TEntity, TId>(RequestUri));
 }
示例#6
0
        public override OdataObject <TEntity, TId> Get(string idOrName)
        {
            if (string.IsNullOrWhiteSpace(idOrName))
            {
                return(null);
            }
            var id = idOrName.To <TId>();

            if (id.Equals(default(TId)))
            {
                var entity = AltKeyService.Get(idOrName)?.ToConcrete <TEntity, TInterface>().AsOdata <TEntity, TId>(RequestUri);
                RelatedEntityFetcher.Fetch(new[] { entity }, UrlParameters);
                return(entity);
            }
            return(base.Get(idOrName));
        }
示例#7
0
 /// <summary>
 /// Get a list of Entities where the value of the property of a given Entity is in the list of values provided.
 /// </summary>
 /// <param name="collection">A ValueCollection that has the property name and the values as strings.</param>
 /// <returns>A List{OdataObject{T}} of entities where each is wrapped in an Odata object.</returns>
 public virtual OdataObjectCollection <TEntity, TId> GetByPropertyValues(string property, List <string> values)
 {
     #region parameter validation
     if (string.IsNullOrWhiteSpace(property))
     {
         throw new ArgumentException($"The property section of the Url must be a valid property of {typeof(TEntity).FullName}", "property");
     }
     if (values == null || !values.Any())
     {
         return(null);
     }
     var propInfo = typeof(TEntity).GetProperty(property);
     if (propInfo == null)
     {
         throw new ArgumentException($"ValueCollection.Property must be a valid property of {typeof(TEntity).FullName}");
     }
     #endregion
     var entities = Service.Get(property, values)?.ToConcrete <TEntity, TInterface>().AsOdata <TEntity, TId>(RequestUri);
     RelatedEntityFetcher.Fetch(entities, UrlParameters);
     return(entities);
 }