示例#1
0
        public IEnumerable <Entity> LoadEntitiesByComponentCriteria <T>(ComponentCriteria <T> criteria) where T : Component
        {
            var ids =
                r.Db(config.DatabaseName)
                .Table(Component.TableName <T>())
                .Filter(criteria.GetFilter())
                .GetField("ParentId")
                .RunResult <IEnumerable <Guid> >(pool);

            return(LoadEntities(ids));
        }
示例#2
0
        public IEnumerable <T> LoadComponents <T>(ComponentCriteria <T> criteria = null) where T : Component
        {
            var tName = Component.TableName <T>();

            if (criteria != null)
            {
                var objs =
                    r.Db(config.DatabaseName)
                    .Table(tName)
                    .Filter(criteria.GetFilter())
                    .RunResult <JArray>(pool)
                    .ToObject <IEnumerable <T> >().ToList();
                var subProps =
                    (typeof(T).GetProperties().Where(x => x.GetCustomAttribute <SubComponentAttribute>() != null)).ToList();
                if (subProps != null)
                {
                    foreach (var s in subProps)
                    {
                        foreach (var o in objs)
                        {
                            s.SetValue(o, LoadSubComponents(s, o.Id));
                        }
                    }
                }

                return(objs);
            }
            else
            {
                var objs =
                    r.Db(config.DatabaseName)
                    .Table(tName)
                    .RunResult <JArray>(pool)
                    .ToObject <IEnumerable <T> >().ToList();
                var subProps =
                    (typeof(T).GetProperties().Where(x => x.GetCustomAttribute <SubComponentAttribute>() != null)).ToList();
                if (subProps != null)
                {
                    foreach (var s in subProps)
                    {
                        foreach (var o in objs)
                        {
                            s.SetValue(o, LoadSubComponents(s, o.Id));
                        }
                    }
                }
                return(objs);
            }
        }