Esempio n. 1
0
        private void AddModelMetadata(Project project
                                      , string controllerName
                                      , string controllerRootName
                                      , string outputPath
                                      , string defaultNamespace
                                      , string modelTypeName
                                      , string methodName
                                      , MetaTableInfo queryMetaTable
                                      , MetaTableInfo resultMetaTable
                                      , bool overwrite = false)
        {
            var templatePath = Path.Combine("MvcScaffolderSP", "Model", "ViewModel");

            Dictionary <string, object> templateParams = new Dictionary <string, object>()
            {
                { "Namespace", defaultNamespace }
                , { "ModelTypeName", modelTypeName }
                , { "MethodName", methodName }
                , { "QueryMetaTable", queryMetaTable }
                , { "ResultMetaTable", resultMetaTable }
            };

            AddFileFromTemplate(project: project
                                , outputPath: outputPath
                                , templateName: templatePath
                                , templateParameters: templateParams
                                , skipIfExists: !overwrite);
        }
Esempio n. 2
0
        // Setting Columns : display name, allow null
        private bool?ShowColumnSetting()
        {
            var    modelType              = _codeGeneratorViewModel.ModelType.CodeType;
            string savefolderPath         = Path.Combine(path1: Context.ActiveProject.GetFullPath(), path2: "CodeGen");
            StorageMan <MetaTableInfo> sm = new StorageMan <MetaTableInfo>(modelTypeName: modelType.Name, savefolderPath: savefolderPath);
            MetaTableInfo data            = sm.Read();

            if (data.Columns.Any())
            {
                _ModelMetadataVM = new ModelMetadataViewModel(dataModel: data);
            }
            else
            {
                //string dbContextTypeName = _codeGeneratorViewModel.DbContextModelType.TypeName;
                //ICodeTypeService codeTypeService = GetService<ICodeTypeService>();
                //CodeType dbContext = codeTypeService.GetCodeType(project: Context.ActiveProject, fullName: dbContextTypeName);
                //IEntityFrameworkService efService = Context.ServiceProvider.GetService<IEntityFrameworkService>();
                //ModelMetadata efMetadata = efService.AddRequiredEntity(context: Context, contextTypeFullName: dbContextTypeName, entityTypeFullName: modelType.FullName);
                var fullName   = modelType.FullName;
                var efMetadata = GetEfMetadata(fullName);
                _ModelMetadataVM = new ModelMetadataViewModel(efMetadata: efMetadata);
            }

            ModelMetadataDialog dialog = new ModelMetadataDialog(viewModel: _ModelMetadataVM);
            bool?isOk = dialog.ShowModal();

            if (isOk == true)
            {
                sm.Save(data: _ModelMetadataVM.DataModel);
            }

            return(isOk);
        }
Esempio n. 3
0
        static void Main(string[] args)
        {
            //mysql
            //string tableName = "abpusers";
            //var metaTableInfoList = MetaTableInfo.GetMetaTableInfoListForMysql(tableName);

            //反射程序集的方式生成相应代码
            string className         = "Order";//跟类名保持一致
            var    metaTableInfoList = MetaTableInfo.GetMetaTableInfoListForAssembly(className);

            //得到主键类型
            var propertyType = metaTableInfoList.FirstOrDefault(m => m.Name == "Id").PropertyType;

            // server端生成
            CodeGeneratorHelper.SetAppServiceIntercafeClass(className, propertyType);
            CodeGeneratorHelper.SetAppServiceClass(className, propertyType);
            CodeGeneratorHelper.SetCreateOrEditInputClass(className, metaTableInfoList);
            CodeGeneratorHelper.SetGetForEditOutputClass(className);
            CodeGeneratorHelper.SetGetInputClass(className);
            CodeGeneratorHelper.SetListDtoClass(className, metaTableInfoList);
            CodeGeneratorHelper.SetCreateOrEditInputClass(className, metaTableInfoList);
            CodeGeneratorHelper.SetExportingIntercafeClass(className);
            CodeGeneratorHelper.SetExportingClass(className, metaTableInfoList);
            //CodeGeneratorHelper.SetConstsClass(className); 若使用 SetAppPermissions,SetAppAuthorizationProvider,SetZh_CN_LocalizationDictionary_Here 三个方法 就可弃用该方法
            CodeGeneratorHelper.SetAppPermissions(className);
            CodeGeneratorHelper.SetAppAuthorizationProvider(className);
            CodeGeneratorHelper.SetZh_CN_LocalizationDictionary_Here(className, metaTableInfoList[0].ClassAnnotation);
            ////client
            CodeGeneratorHelper.SetControllerClass(className, propertyType);
            CodeGeneratorHelper.SetCreateOrEditHtmlTemplate(className, metaTableInfoList);
            CodeGeneratorHelper.SetCreateOrEditJs(className);
            CodeGeneratorHelper.SetCreateOrEditViewModelClass(className);
            CodeGeneratorHelper.SetIndexHtmlTemplate(className, metaTableInfoList);
            CodeGeneratorHelper.SetIndexJsTemplate(className, metaTableInfoList);
        }
        private void fillCodeTypeMembers(MetaTableInfo dataModel, CodeType codeType, bool IsHiddenFields = true)
        {
            foreach (CodeElement ce in codeType.Members)
            {
                var prop = ce as CodeProperty;
                if (prop == null)
                {
                    continue;
                }
                if (IsHiddenFields && VmUtils.DefaultHiddenFields.Contains(prop.Name))
                {
                    continue;                                                                    //默认不显示的字段
                }
                if (dataModel.Columns.Any(d => d.Name == prop.Name))
                {
                    continue;                                                //已存在
                }
                if (prop.Type.AsFullName.StartsWith("System.Collections"))
                {
                    continue;                                                       //不显示集合类
                }
                dataModel.Columns.Add(new MetaColumnInfo(prop));
            }

            foreach (CodeElement c in codeType.Bases)
            {
                if (c.IsCodeType)
                {
                    fillCodeTypeMembers(dataModel, (CodeType)c);
                }
            }
        }
Esempio n. 5
0
        // Setting Columns : display name, allow null
        private bool?ShowColumnSetting()
        {
            var    modelType              = _codeGeneratorViewModel.ModelType.CodeType;
            string savefolderPath         = Path.Combine(Context.ActiveProject.GetFullPath(), "CodeGen");
            StorageMan <MetaTableInfo> sm = new StorageMan <MetaTableInfo>(modelType.Name, savefolderPath);
            MetaTableInfo data            = sm.Read();

            if (data.Columns.Any())
            {
                _ModelMetadataVM = new ModelMetadataViewModel(data);
            }
            else
            {
                string                  dbContextTypeName = _codeGeneratorViewModel.DbContextModelType.TypeName;
                ICodeTypeService        codeTypeService   = GetService <ICodeTypeService>();
                CodeType                dbContext         = codeTypeService.GetCodeType(Context.ActiveProject, dbContextTypeName);
                IEntityFrameworkService efService         = Context.ServiceProvider.GetService <IEntityFrameworkService>();
                ModelMetadata           efMetadata        = efService.AddRequiredEntity(Context, dbContextTypeName, modelType.FullName);
                _ModelMetadataVM = new ModelMetadataViewModel(efMetadata);
            }

            ModelMetadataDialog dialog = new ModelMetadataDialog(_ModelMetadataVM);
            bool?isOk = dialog.ShowModal();

            if (isOk == true)
            {
                sm.Save(_ModelMetadataVM.DataModel);
            }

            return(isOk);
        }
        public MetadataSettingViewModel(CodeType codeType, bool IsHiddenFields = true)
        {
            MetaTableInfo dataModel = new MetaTableInfo();

            fillCodeTypeMembers(dataModel, codeType, IsHiddenFields);

            Init(codeType, dataModel);
        }
 private void Init(MetaTableInfo dataModel)
 {
     this.DataModel = dataModel;
     this.Columns   = new ObservableCollection <MetadataFieldViewModel>();
     foreach (MetaColumnInfo f1 in dataModel.Columns)
     {
         this.Columns.Add(new MetadataFieldViewModel(f1));
     }
 }
        public MetadataSettingViewModel(ModelMetadata efMetadata)
        {
            MetaTableInfo dataModel = new MetaTableInfo();

            foreach (Microsoft.AspNet.Scaffolding.Core.Metadata.PropertyMetadata p1 in efMetadata.Properties)
            {
                dataModel.Columns.Add(new MetaColumnInfo(p1));
            }
            Init(dataModel);
        }
        public MetadataSettingViewModel(CodeType codeType)
        {
            MetaTableInfo dataModel = new MetaTableInfo();

            foreach (CodeElement ce in codeType.Members)
            {
                dataModel.Columns.Add(new MetaColumnInfo((CodeProperty)ce));
            }
            Init(dataModel);
        }
Esempio n. 10
0
        private string GetAllColumnsText(MetaTableInfo table)
        {
            string result = "";

            foreach (MetaColumnInfo column in table.Columns)
            {
                result += "," + column.Name;
            }
            return(result.Substring(1));
        }
        public MetadataSettingViewModel(CodeFunction codefunction)
        {
            MetaTableInfo dataModel = new MetaTableInfo();

            foreach (CodeElement ce in codefunction.Parameters)
            {
                CodeParameter p1 = (CodeParameter)ce;
                dataModel.Columns.Add(new MetaColumnInfo(p1));
            }
            Init(dataModel);
        }
Esempio n. 12
0
            public IEnumerable <FieldInfoDto> Resolve(MetaTableInfo source, TableInfoDto destination, IEnumerable <FieldInfoDto> destMember, ResolutionContext context)
            {
                var list = new List <FieldInfoDto>();

                foreach (var fieldInfo in source.FieldInfos)
                {
                    list.Add(context.Mapper.Map <FieldInfoDto>(fieldInfo));
                }

                return(list);
            }
Esempio n. 13
0
        static void Main(string[] args)
        {
            string className = "User";

            var metaTableInfoList = MetaTableInfo.GetMetaTableInfoList(className);
            //得到主键类型
            var propertyType = metaTableInfoList.FirstOrDefault(m => m.Name == "Id").PropertyType;

            CodeGeneratorHelper.SetAppServiceIntercafeClass(className, propertyType);
            CodeGeneratorHelper.SetAppServiceClass(className, propertyType);
            CodeGeneratorHelper.SetCreateOrEditInputClass(className, metaTableInfoList);
        }
Esempio n. 14
0
        static void Main(string[] args)
        {
            #region 获取数据源的两种方式mysql和反射程序集
            //mysql
            //string tableName = "abpusers";//表名
            //var metaTableInfoList = MetaTableInfo.GetMetaTableInfoListForMysql(tableName);

            //反射程序集的方式生成相应代码

            var metaTableInfoList = MetaTableInfo.GetMetaTableInfoListForAssembly();
            foreach (var item in metaTableInfoList)
            {
                string className = item.ClassName;//跟类名保持一致
                CodeGeneratorHelper.SetAuthorizationProvider(className);
                CodeGeneratorHelper.SetAuthorizationPermissions(className);

                //得到主键类型
                var propertyType = item.MetaTableInfos.FirstOrDefault(m => m.Name == "Id").PropertyType;
                // server端生成
                CodeGeneratorHelper.SetAppServiceIntercafeClass(className, propertyType);
                CodeGeneratorHelper.SetAppServiceClass(className, propertyType);

                CodeGeneratorHelper.SetCreateOrEditInputClass(className, item.MetaTableInfos);
                CodeGeneratorHelper.SetDeleteInputClass(className, item.MetaTableInfos, propertyType);
                CodeGeneratorHelper.SetGetAllInputClass(className, item.MetaTableInfos);
                CodeGeneratorHelper.SetGetInputClass(className, item.MetaTableInfos, propertyType);
                CodeGeneratorHelper.SetUpdateInputClass(className, item.MetaTableInfos, propertyType);
                CodeGeneratorHelper.SetDtoOutClass(className, item.MetaTableInfos, propertyType);


                CodeGeneratorHelper.SetCreateOrEditViewModelClass(className);
                CodeGeneratorHelper.SetControllerClass(className, propertyType);
                CodeGeneratorHelper.SetIndexHtmlTemplate(className, item.MetaTableInfos);
                CodeGeneratorHelper.SetCreateHtmlTemplate(className, item.MetaTableInfos);
                CodeGeneratorHelper.SetUpdateHtmlTemplate(className, item.MetaTableInfos);
                CodeGeneratorHelper.SetIndexJsTemplate(className, item.MetaTableInfos);
                CodeGeneratorHelper.SetUpdateJs(className);
            }
            #endregion
        }
Esempio n. 15
0
        // Collects the common data needed by all of the scaffolded output and generates:
        // 1) Add ViewModel
        // 2) Add Controller
        // 3) Add View
        private void GenerateCode(Project project, string selectionRelativePath, SPCodeGeneratorViewModel codeGeneratorViewModel)
        {
            // Get Model Type
            var modelType = codeGeneratorViewModel.ModelType.CodeType;

            // Get the dbContext
            string           dbContextTypeName = codeGeneratorViewModel.DbContextModelType.TypeName;
            ICodeTypeService codeTypeService   = GetService <ICodeTypeService>();
            CodeType         dbContext         = codeTypeService.GetCodeType(project, dbContextTypeName);

            // Get the Entity Framework Meta Data
            //IEntityFrameworkService efService = Context.ServiceProvider.GetService<IEntityFrameworkService>();
            //ModelMetadata efMetadata = efService.AddRequiredEntity(Context, dbContextTypeName, modelType.FullName);

            string methodName         = _codeGeneratorViewModel.MethodTypeName;
            string controllerName     = codeGeneratorViewModel.ControllerName;
            string controllerRootName = controllerName.Replace("Controller", "");

            // add Metadata for Model
            string        defaultNamespace = modelType.Namespace.FullName;
            MetaTableInfo queryMetaTable   = _codeGeneratorViewModel.QueryFormViewModel.DataModel;
            MetaTableInfo resultMetaTable  = _codeGeneratorViewModel.ResultListViewModel.DataModel;

            string outputFolderPath = Path.Combine(GetModelFolderPath(selectionRelativePath), modelType.Name + "ViewModels");

            AddModelMetadata(project: project
                             , controllerName: controllerName
                             , controllerRootName: controllerRootName
                             , outputPath: outputFolderPath
                             , defaultNamespace: defaultNamespace
                             , modelTypeName: modelType.Name
                             , methodName: methodName
                             , queryMetaTable: queryMetaTable
                             , resultMetaTable: resultMetaTable
                             , overwrite: codeGeneratorViewModel.OverwriteViews);

            // Create Controller
            outputFolderPath = Path.Combine(selectionRelativePath, controllerName);
            AddMvcController(project: project
                             , controllerName: controllerName
                             , controllerRootName: controllerRootName
                             , outputPath: outputFolderPath
                             , ContextTypeName: dbContext.Name
                             , modelType: modelType
                             , efMetadata: null/*efMetadata*/
                             , overwrite: codeGeneratorViewModel.OverwriteViews);

            if (!codeGeneratorViewModel.GenerateViews)
            {
                return;
            }


            // Create Views
            string viewRootPath   = GetViewsFolderPath(selectionRelativePath);
            string viewFolderPath = Path.Combine(viewRootPath, controllerRootName);

            foreach (string viewName in new string[2] {
                "Index", "_Index"
            })
            {
                AddView(project, viewFolderPath, viewName, controllerRootName, modelType
                        , null /*efMetadata*/
                        , referenceScriptLibraries: codeGeneratorViewModel.ReferenceScriptLibraries
                        , isLayoutPageSelected: codeGeneratorViewModel.LayoutPageSelected
                        , layoutPageFile: codeGeneratorViewModel.LayoutPageFile
                        , overwrite: codeGeneratorViewModel.OverwriteViews
                        );
            }

            //_ViewStart & Create _Layout
            if (codeGeneratorViewModel.LayoutPageSelected)
            {
                string areaName = GetAreaName(selectionRelativePath);
                AddDependencyFile(project, viewRootPath, areaName);
            }
        }
 public MetadataSettingViewModel(MetaTableInfo dataModel)
 {
     Init(dataModel);
 }
 public ModelMetadataViewModel(MetaTableInfo dataModel) : base(dataModel)
 {
 }