Exemple #1
0
        public static async Task <List <T> > get(QueryResult result)
        {
            List <T> res = new List <T>();

            IEntityManager   em   = EntityManager.getInstance();
            EntityRepository repo = em.getRepository(result.entity_repository_name);

            while (await result.data.ReadAsync())
            {
                Type   entity_type = repo.getEntityType();
                object obj         = Activator.CreateInstance(repo.getEntityType());
                ((IEntity)obj).assignData(result.data);
                res.Add((T)obj);
            }

            return(res);
        }
Exemple #2
0
        /**
         * Find one Entity by filter
         *
         * @return Task<Entity>
         */
        public virtual async Task <Entity> findOne(dynamic entity_repository_name,
                                                   List <QueryFilter> filter, string connection_name = null)
        {
            QueryBuilder qb = this.select(entity_repository_name, null, null, connection_name);

            qb.filter(filter);
            qb.limit(1);
            await qb.execute();

            DbDataReader res = qb.getRawResult();

            if (await res.ReadAsync())
            {
                EntityRepository repository = this.getRepository(entity_repository_name);
                Entity           entity     = repository.Instance(res);
                return(entity);
            }

            return(null);
        }
Exemple #3
0
        /**
         * Assign values from database
         * @param DbDataReader data
         */
        public virtual void assignData(DbDataReader res)
        {
            IEntityManager   em         = EntityManager.getInstance();
            Connection       connection = em.getConnection(this.getConnectionName());
            EntityRepository repo       = em.getRepository(this.getEntityRepositoryType());

            Dictionary <string, EntityFieldInfo> st = repo.getStruct();

            foreach (EntityFieldInfo field in st.Values)
            {
                if (!field.isDbType())
                {
                    continue;
                }

                string  field_name = field.fieldName();
                int     pos        = res.GetOrdinal(field_name);
                dynamic db_value   = res.GetFieldValue <dynamic>(pos);
                this.setDatabaseValue(field, connection, db_value);
            }
        }
Exemple #4
0
        /**
         * Delete Entity
         */
        public virtual async void remove()
        {
            this.preRemove();

            bool             execute    = false;
            IEntityManager   em         = EntityManager.getInstance();
            Connection       connection = em.getConnection(this.getConnectionName());
            QueryBuilder     qb         = em.createQueryBuilder(this.getConnectionName());
            EntityRepository repo       = em.getRepository(this.getEntityRepositoryType());

            Dictionary <string, EntityFieldInfo> st = repo.getStruct();

            foreach (EntityFieldInfo field in st.Values)
            {
                if (!field.isDbType())
                {
                    continue;
                }

                string  field_name = field.fieldName();
                dynamic old_value  = this._old_data.ContainsKey(field_name) ?
                                     this._old_data[field_name] : null;

                // If primary
                if (field.isPrimary())
                {
                    execute = true;
                    qb.addFilter(new QueryFilter(field_name, "=", old_value));
                }
            }

            // Execute query
            if (execute)
            {
                await qb.execute();
            }

            this.postRemove();
        }