public static IModelCodeGenerationOptions Create(ModelCodegenerationOptionsBase.SupportedLanguages CodeLanguageIn,
                    ModelCodegenerationOptionsBase.ConstructorPreferenceSetting ConstructorPreferenceIn,
                    ModelCodegenerationOptionsBase.TypedCodeGenerationSetting TypeSettingIn, 
                    System.IO.DirectoryInfo DirectoryRootIn,
                    bool SeparateFolderPerModelIn,
                    bool SeparateFolderPerAggregateIn,
                    bool GenerateEntityFrameworkClassesIn = false,
                    bool GenerateEventGridSupportingCodeIn = false )
        {

            return new ModelCodeGenerationOptions(CodeLanguageIn,
                ConstructorPreferenceIn,
                TypeSettingIn,
                DirectoryRootIn,
                SeparateFolderPerModelIn,
                SeparateFolderPerAggregateIn,
                GenerateEntityFrameworkClassesIn,
                GenerateEventGridSupportingCodeIn);

        }
        private ModelCodeGenerationOptions(
                    ModelCodegenerationOptionsBase.SupportedLanguages CodeLanguageIn,
                    ModelCodegenerationOptionsBase.ConstructorPreferenceSetting ConstructorPreferenceIn,
                    ModelCodegenerationOptionsBase.TypedCodeGenerationSetting TypeSettingIn,
                    System.IO.DirectoryInfo DirectoryRootIn,
                    bool SeparateFolderPerModelIn,
                    bool SeparateFolderPerAggregateIn,
                    bool GenerateEntityFrameworkClassesIn = false ,
                    bool GenerateEventGridSupportingCodeIn = false )
        {

            _codelanguage = CodeLanguageIn;
            _constructorPreference = ConstructorPreferenceIn;
            _typeSetting = TypeSettingIn;
            _directoryRoot = DirectoryRootIn;
            _separateFolderPerModel = SeparateFolderPerModelIn;
            _separateFolderPerAggregate = SeparateFolderPerAggregateIn;

            _generateEntityFrameworkClasses = GenerateEntityFrameworkClassesIn;
            _generateEventGridSupportingCode = GenerateEventGridSupportingCodeIn;

        }
Exemplo n.º 3
0
        /// <summary>
        /// Get the code generation options that have been set at the model level
        /// </summary>
        /// <remarks>
        /// These may be overridden on a per-user basis as part of the build process
        /// </remarks>
        public IModelCodeGenerationOptions GetCodeGenerationOptions()
        {
            ModelCodegenerationOptionsBase.SupportedLanguages           CodeLanguageIn          = ModelCodegenerationOptionsBase.SupportedLanguages.VBNet;
            ModelCodegenerationOptionsBase.ConstructorPreferenceSetting ConstructorPreferenceIn = ModelCodegenerationOptionsBase.ConstructorPreferenceSetting.GenerateBoth;
            ModelCodegenerationOptionsBase.TypedCodeGenerationSetting   TypeSettingIn           = ModelCodegenerationOptionsBase.TypedCodeGenerationSetting.StronglyTyped;
            System.IO.DirectoryInfo DirectoryRootIn = null;
            bool SeparateFolderPerModelIn           = true;
            bool SeparateFolderPerAggregateIn       = true;
            bool GenerateEntityFrameworkClassesIn   = false;
            bool GenerateEventGridIn = false;

            // Read the model properties that affect code generation
            if (this.DefaultCodeGenerationLanguage == TargetLanguage.CSharp)
            {
                CodeLanguageIn = ModelCodegenerationOptionsBase.SupportedLanguages.CSharp;
            }
            if (this.TypedCodeGeneration == TypedGenerationSetting.UntypedJSON)
            {
                TypeSettingIn = ModelCodegenerationOptionsBase.TypedCodeGenerationSetting.UntypedJSON;
            }
            if (!this.SubfolderPerDomain)
            {
                SeparateFolderPerModelIn = false;
            }
            if (!this.SubfolderPerAggregate)
            {
                SeparateFolderPerAggregateIn = false;
            }

            if (!string.IsNullOrWhiteSpace(this.CodeRootFolder))
            {
                if (System.IO.Directory.Exists(this.CodeRootFolder))
                {
                    DirectoryRootIn = new System.IO.DirectoryInfo(this.CodeRootFolder);
                }
                else
                {
                    // Can you make this into a relative path??
                    if (!System.IO.Path.IsPathRooted(this.DocumentationRootFolder))
                    {
                        DirectoryRootIn = new System.IO.DirectoryInfo(
                            System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory
                                                   , this.CodeRootFolder));
                    }
                    else
                    {
                        // Can we make the directory?
                        DirectoryRootIn = new System.IO.DirectoryInfo(this.CodeRootFolder);
                        DirectoryRootIn.Create();
                    }
                }
            }
            else
            {
                DirectoryRootIn = new System.IO.DirectoryInfo(System.IO.Path.Combine(System.IO.Path.GetTempPath(),
                                                                                     this.Name,
                                                                                     "Code"));
            }

            if (this.GenerateEntityFrameworkClasses)
            {
                GenerateEntityFrameworkClassesIn = true;
            }

            if (this.GenerateEventGridSupportingCode)
            {
                GenerateEventGridIn = true;
            }

            // Read any per-user overrides ??

            return(ModelCodeGenerationOptions.Create(CodeLanguageIn,
                                                     ConstructorPreferenceIn,
                                                     TypeSettingIn,
                                                     DirectoryRootIn,
                                                     SeparateFolderPerModelIn,
                                                     SeparateFolderPerAggregateIn,
                                                     GenerateEntityFrameworkClassesIn,
                                                     GenerateEventGridIn));
        }