Example #1
0
        /// <summary>
        /// 获取导航属性所属的主键
        /// </summary>
        /// <param name="def"></param>
        /// <param name="dojoCompile"></param>
        /// <param name="toEntity"></param>
        /// <returns></returns>
        public static string GetNavPrimaryContent(EntityDefinition def, CompileBase compile, string toEntity)
        {
            string navPrimaryKey  = string.Empty;
            var    navEntityItems = compile.ProjectItems.Where(a => a.Value.DocumentType == GlobalIds.DocumentType.Entity && a.Value.Name == toEntity).FirstOrDefault();

            if (navEntityItems.Value != null)
            {
                //继承实体
                var inheritEntityId = (from t in navEntityItems.Value.Propertys where t.Key == "InheritEntityId" select t.Value).FirstOrDefault();
                if (inheritEntityId != null)
                {
                    StringBuilder sbPrimary = new StringBuilder();
                    GetNavPrimaryString(def, compile, navEntityItems.Value.Propertys, sbPrimary);
                    navPrimaryKey = sbPrimary.ToString();
                }
                else
                {
                    //非继承实体
                    var nvaDef = compile.GetDocumentBody(navEntityItems.Value) as EntityDefinition;
                    foreach (var navPrimary in nvaDef.Members.OfType <PrimaryMember>())
                    {
                        navPrimaryKey = navPrimary.Name;
                    }
                }
            }
            return(navPrimaryKey);
        }
Example #2
0
        /// <summary>
        /// 生成逻辑
        /// </summary>
        /// <param name="compile">DOJO编译器</param>
        /// <param name="doc">文档对象模型</param>
        public override void Build(CompileBase compile, ProjectDocument doc)
        {
            var docBody          = compile.GetDocumentBody(doc);
            var screenDefinition = docBody as ScreenDefinition;

            if (screenDefinition != null)
            {
                ControlHost controlHost = screenDefinition.Root;
                BuildHtml(doc.Name, controlHost, compile, screenDefinition, doc);
            }
        }
Example #3
0
        /// <summary>
        /// 获取所有自定义外键
        /// </summary>
        /// <param name="itemPropertys"></param>
        /// <param name="def"></param>
        /// <param name="compile"></param>
        /// <param name="sb"></param>
        public static void GetAllRelationForeignContent(Dictionary <string, object> itemPropertys, EntityDefinition def, CompileBase compile, StringBuilder sb)
        {
            var inheritEntityId = (from t in itemPropertys where t.Key == "InheritEntityId" select t.Value).FirstOrDefault();

            if (inheritEntityId != null)
            {
                var entityItems = compile.ProjectItems.Where(a => a.Value.DocumentType == GlobalIds.DocumentType.Entity && a.Key == int.Parse(inheritEntityId.ToString())).FirstOrDefault();
                if (entityItems.Value != null)
                {
                    var defItem = compile.GetDocumentBody(entityItems.Value) as EntityDefinition;
                    GetAllRelationForeignString(defItem, compile, sb);

                    //递归处理
                    GetAllRelationForeignContent(entityItems.Value.Propertys, def, compile, sb);
                }
            }
            else
            {
                GetAllRelationForeignString(def, compile, sb);
            }
        }
Example #4
0
        /// <summary>
        /// 获取导航属性所属的主键
        /// </summary>
        /// <param name="def"></param>
        /// <param name="dojoCompile"></param>
        /// <param name="itemPropertys"></param>
        /// <param name="sb"></param>
        private static void GetNavPrimaryString(EntityDefinition def, CompileBase compile, Dictionary <string, object> itemPropertys, StringBuilder sb)
        {
            var inheritEntityId = (from t in itemPropertys where t.Key == "InheritEntityId" select t.Value).FirstOrDefault();

            if (inheritEntityId != null)
            {
                var entityItems = compile.ProjectItems.Where(a => a.Value.DocumentType == GlobalIds.DocumentType.Entity && a.Key == int.Parse(inheritEntityId.ToString())).FirstOrDefault();
                if (entityItems.Value != null)
                {
                    var defItem = compile.GetDocumentBody(entityItems.Value) as EntityDefinition;
                    if (defItem.Members.OfType <PrimaryMember>().Count() > 0)
                    {
                        foreach (var primary in defItem.Members.OfType <PrimaryMember>())
                        {
                            sb.AppendFormat("{0}", primary.Name);
                        }
                    }
                    //递归处理
                    GetNavPrimaryString(def, compile, entityItems.Value.Propertys, sb);
                }
            }
        }