public IEntityTitle FindTitle(int id)
        {
            var provider = ModelProvider.Get(this.GetType());

            return(provider.TitleFactory.FindByID(id));
        }
        protected override void InitData()
        {
            base.InitData();

            // InitData一般用于当数据表没有数据时添加一些默认数据,该实体类的任何第一次数据库操作都会触发该方法,默认异步调用
            // Meta.Count是快速取得表记录数
            if (Meta.Count > 0)
            {
                return;
            }

            // 需要注意的是,如果该方法调用了其它实体类的首次数据库操作,目标实体类的数据初始化将会在同一个线程完成
            if (XTrace.Debug)
            {
                XTrace.WriteLine("开始初始化{0}[{1}]数据……", typeof(TEntity).Name, Meta.Table.DataTable.DisplayName);
            }
            var fn = "../InitData/{0}.json".F(Meta.TableName).GetFullPath();

            if (File.Exists(fn))
            {
                if (XTrace.Debug)
                {
                    XTrace.WriteLine("使用数据初始化文件【{0}】初始化{1}[{2}]数据……", fn, typeof(TEntity).Name, Meta.Table.DataTable.DisplayName);
                }

                var list = EntityList <TEntity> .FromJson(File.ReadAllText(fn, Encoding.UTF8));

                var queue    = new Queue <TEntity>(list);
                var provider = ModelProvider.Get <TEntity>();
                var model    = Model.FindByName(provider.Name);
                var chn      = Channel.FindBySuffixAndModel(null, model.ID);
                while (queue.Count > 0)
                {
                    var item = queue.Dequeue();
                    item.ChannelID = chn.ID;
                    item.Save();
                    if (item.Childrens != null && item.Childrens.Count > 0)
                    {
                        foreach (var child in item.Childrens)
                        {
                            child.ParentID = item.ID;
                            queue.Enqueue(child);
                        }
                    }
                }
            }
            else
            {
                // 找到频道
                var provider = ModelProvider.Get <TEntity>();
                var model    = Model.FindByName(provider.Name);
                var chn      = Channel.FindBySuffixAndModel(null, model.ID);

                var entity = new TEntity
                {
                    Name      = "默认" + Meta.Table.Description,
                    ChannelID = chn.ID
                };
                entity.Insert();

                entity = new TEntity
                {
                    ParentID  = entity.ID,
                    Name      = "二级分类",
                    ChannelID = chn.ID
                };
                entity.Insert();
            }
            if (XTrace.Debug)
            {
                XTrace.WriteLine("完成初始化{0}[{1}]数据!", typeof(TEntity).Name, Meta.Table.DataTable.DisplayName);
            }
        }
        //public int GetTitleCount()
        //{
        //    var provider = ModelProvider.Get(this.GetType());
        //    return provider.TitleFactory.GetTitleCount(this.ID);
        //}

        public IList <IEntityTitle> GetTitles(PageParameter pager)
        {
            var provider = ModelProvider.Get(this.GetType());

            return(provider.TitleFactory.GetTitles(ID, pager));
        }