Exemplo n.º 1
0
        /// <summary>
        /// 代码生成
        /// </summary>
        /// <param name="target">生成目标</param>
        /// <param name="tmpFiles">模板文件</param>
        /// <param name="tableNodeList">表集合</param>
        private void GenerateCode(CodeGenTarget target, string[] tmpFiles, List <TreeNode> tableNodeList)
        {
            switch (target)
            {
            case CodeGenTarget.File:
                break;

            case CodeGenTarget.Directories:
                break;

            default:
                break;
            }
            if (tmpFiles.Length == 0)
            {
                MessageBox.Show("请选择模板");
                return;
            }

            tableNodeList.ForEach(node =>
            {
                var serversNode    = node.Parent.Parent.Parent;
                var serversNodeTag = (TreeNodeTag)serversNode.Tag;
                var servers        = (Servers)serversNodeTag.Tag;
                var dataBaseName   = node.Parent.Parent.Text;
                var tableName      = node.Text;

                //生成文件代码
                for (int j = 0; j < tmpFiles.Length; j++)
                {
                    var arr      = Path.GetFileNameWithoutExtension(tmpFiles[j]).Split('_');
                    var fileType = arr.Length < 2 ? "cs" : arr[1];//文件类型
                    var codeType = CommonHelper.GetCodeTypeName(fileType);

                    var fields = new BLL_Database(servers.Type).GetFields(servers.Id, dataBaseName, tableName);
                    var result = RazorEngineExtension.Parse <RazorPageModel>(tmpFiles[j], new RazorPageModel
                    {
                        TableName = tableName,
                        Fields    = fields
                    });

                    switch (target)
                    {
                    case CodeGenTarget.Directories:
                        string fileName = arr[0].ToUpper() + "_" + tableName + "." + fileType;
                        string filePath = Path.Combine(AppGlobalConfig.Intance.Config.FileSaveDirectory, fileName);
                        filePath.WriteAllText(result);
                        break;

                    default:
                        var formCode = new Form_Code(tableName + "_" + arr[0], result, codeType);
                        formCode.Show(Form_Main.Instance.dockPanel);
                        break;
                    }
                }
            });
        }
 /// <summary>
 /// Create a new instance of EntityGenerator implementation.
 /// </summary>
 /// <param name="target">Target for which to generate code.</param>
 /// <param name="syncObjectSchema">Schema under which the sync related objects are created in the SQL database. 
 /// This can be null when generating non-server code.</param>
 /// <returns></returns>
 public static EntityGenerator Create(CodeGenTarget target, string syncObjectSchema)
 {
     switch (target)
     {
         case CodeGenTarget.Server:
         default:
             return new ServiceEntityGenerator(syncObjectSchema);
         case CodeGenTarget.ISClient:
             return new IsolatedStoreClientEntityGenerator();
         case CodeGenTarget.Client:
             return new GenericClientEntityGenerator();
     }
 }
Exemplo n.º 3
0
        /// <summary>
        /// 生成选择
        /// </summary>
        /// <param name="target"></param>
        public void BuilderSelect(CodeGenTarget target)
        {
            List <TreeNode> selNodeList = new List <TreeNode>();

            switch (target)
            {
            case CodeGenTarget.File:
                var selNode     = treeViewLeft.SelectedNode;
                var treeNodeTag = (TreeNodeTag)selNode.Tag;
                if (treeNodeTag.Type == TreeNodeType.Table)
                {
                    selNodeList = new List <TreeNode> {
                        selNode
                    };
                }
                break;

            case CodeGenTarget.Directories:
                selNodeList = GetTreeNodeSelectedList();
                break;

            default:
                break;
            }

            if (!selNodeList.Any())
            {
                ShowBox("请选择数据表");
                return;
            }

            new Form_BuilderSelect((form, files) =>
            {
                GenerateCode(target, files, selNodeList);
                form.Close();
            }).ShowDialog();
        }
Exemplo n.º 4
0
        /// <inheritdoc/>
        public void RegisterTarget(CodeGenTarget target, TargetRegistrations registrations = TargetRegistrations.All)
        {
            switch (target)
            {
            case CodeGenTarget.Native:
                RegisterNative(registrations);
                break;

            case CodeGenTarget.AArch64:
                RegisterAArch64(registrations);
                break;

            case CodeGenTarget.AMDGPU:
                RegisterAMDGPU(registrations);
                break;

            case CodeGenTarget.ARM:
                RegisterARM(registrations);
                break;

            case CodeGenTarget.BPF:
                RegisterBPF(registrations);
                break;

            case CodeGenTarget.Hexagon:
                RegisterHexagon(registrations);
                break;

            case CodeGenTarget.Lanai:
                RegisterLanai(registrations);
                break;

            case CodeGenTarget.MIPS:
                RegisterMips(registrations);
                break;

            case CodeGenTarget.MSP430:
                RegisterMSP430(registrations);
                break;

            case CodeGenTarget.NvidiaPTX:
                RegisterNVPTX(registrations);
                break;

            case CodeGenTarget.PowerPC:
                RegisterPowerPC(registrations);
                break;

            case CodeGenTarget.Sparc:
                RegisterSparc(registrations);
                break;

            case CodeGenTarget.SystemZ:
                RegisterSystemZ(registrations);
                break;

            case CodeGenTarget.WebAssembly:
                RegisterWebAssembly(registrations);
                break;

            case CodeGenTarget.X86:
                RegisterX86(registrations);
                break;

            case CodeGenTarget.XCore:
                RegisterXCore(registrations);
                break;

            case CodeGenTarget.RISCV:
                RegisterRISCV(registrations);
                break;

            case CodeGenTarget.All:
                RegisterAll(registrations);
                break;
            }
        }