Пример #1
0
            public static VCM Create(VersionChecker owner)
            {
                var version = owner._version;

                var result = new VCM()
                {
                    ClassRegion = version.ClassRegion.AssemblyQualifiedName,
                    ScopeId     = version.ScopeId,
                    Value       = version.Value
                };

                if (version.ScopeClass != null)
                {
                    result.ScopeClass = version.ScopeClass.AssemblyQualifiedName;
                }

                return(result);
            }
Пример #2
0
        /// <summary>
        /// 从缓存中读取指定实体类型的某个父对象下的所有子对象。
        /// 如果缓存中不存在,或者缓存数据已经过期,则调用 GetByParentId 方法获取数据,并把最终数据加入到缓存中。
        /// </summary>
        /// <param name="parent">The parent.</param>
        /// <returns></returns>
        internal override IList <Entity> GetCachedTableByParent(Entity parent)
        {
            //只使用 SqlCe 作为 GetByParent 的缓存
            Cache cache = CacheInstances.Disk;

            IList <Entity> result = null;

            var sd = this.ClientCacheDefinition;

            if (sd != null)
            {
                var className = sd.Class.Name;
                var key       = string.Format(CacheByParentKeyFormat, parent.Id);
                result = cache.Get(key, className) as IList <Entity>;

                if (result == null)
                {
                    result = this._repository.GetByParentId(parent.Id);

                    VersionChecker checker = null;
                    if (sd.ScopeById)
                    {
                        var scopeId = sd.ScopeIdGetter(parent);
                        checker = new VersionChecker(sd.Class, sd.ScopeClass, scopeId);
                    }
                    else
                    {
                        checker = new VersionChecker(sd.Class);
                    }

                    var policy = new Policy()
                    {
                        Checker = checker
                    };
                    cache.Add(key, result, policy, className);
                }
            }

            return(result);
        }
Пример #3
0
        /// <summary>
        /// 从缓存中读取指定实体类型的某个父对象下的所有子对象。
        /// 如果缓存中不存在,或者缓存数据已经过期,则调用 GetByParentId 方法获取数据,并把最终数据加入到缓存中。
        /// </summary>
        /// <param name="parent">The parent.</param>
        /// <returns></returns>
        internal override IList<Entity> GetCachedTableByParent(Entity parent)
        {
            //只使用 SqlCe 作为 GetByParent 的缓存
            Cache cache = CacheInstance.Disk;

            IList<Entity> result = null;

            var sd = this.ClientCacheDefinition;
            if (sd != null)
            {
                var className = sd.Class.Name;
                var key = string.Format(CacheByParentKeyFormat, parent.Id);
                result = cache.Get(key, className) as IList<Entity>;

                if (result == null)
                {
                    result = this._repository.GetByParentId(parent.Id);

                    VersionChecker checker = null;
                    if (sd.ScopeById)
                    {
                        var scopeId = sd.ScopeIdGetter(parent);
                        checker = new VersionChecker(sd.Class, sd.ScopeClass, scopeId);
                    }
                    else
                    {
                        checker = new VersionChecker(sd.Class);
                    }

                    var policy = new Policy() { Checker = checker };
                    cache.Add(key, result, policy, className);
                }
            }

            return result;
        }
Пример #4
0
            public static VCM Create(VersionChecker owner)
            {
                var version = owner._version;

                var result = new VCM()
                {
                    ClassRegion = version.ClassRegion.AssemblyQualifiedName,
                    ScopeId = version.ScopeId,
                    Value = version.Value
                };
                if (version.ScopeClass != null)
                {
                    result.ScopeClass = version.ScopeClass.AssemblyQualifiedName;
                }

                return result;
            }