예제 #1
0
        public CodeGenerator(IOptions <CodeGenerateOption> options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            _options = options.Value;

            if (_options.ConnectionString.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException("请指定数据库连接串!");
            }
            if (_options.DbType.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException("请指定数据库类型!");
            }

            var path = AppDomain.CurrentDomain.BaseDirectory;

            if (_options.OutputPath.IsNullOrWhiteSpace())
            {
                _options.OutputPath = path;
            }

            var flag = path.IndexOf("/bin");

            if (flag > 0)
            {
                Delimiter = "/";//如果可以取到值,修改分割符
            }
        }
예제 #2
0
        private readonly string Delimiter = "\\";//分隔符,默认为windows下的\\分隔符
        public CodeGenerator(CodeGenerateOption options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            _options = options;
            if (_options.ConnectionString.IsNullOrEmpty())
            {
                throw new ArgumentNullException("不指定数据库连接串就生成代码,你想上天吗?");
            }
            if (_options.DbType.IsNullOrEmpty())
            {
                throw new ArgumentNullException("不指定数据库类型就生成代码,你想逆天吗?");
            }
            var path = AppDomain.CurrentDomain.BaseDirectory;

            if (_options.OutputPath.IsNullOrEmpty())
            {
                _options.OutputPath = path;
            }
            var flag = path.IndexOf("/bin");

            if (flag > 0)
            {
                Delimiter = "/";//如果可以取到值,修改分割符
            }
        }
예제 #3
0
        static void InitIoC()
        {
            var dbContextOption = new DbContextOption
            {
                ConnectionString  = ConfigHelper.GetConnectionString("mssqlserver"),
                ModelAssemblyName = "Zxw.Framework.Sample.Models"
            };
            var codeGenerateOption = new CodeGenerateOption
            {
                ModelsNamespace        = "Zxw.Framework.Sample.Models",
                IRepositoriesNamespace = "Zxw.Framework.Sample.IRepositories",
                RepositoriesNamespace  = "Zxw.Framework.Sample.Repositories",
                IServicsNamespace      = "Zxw.Framework.Sample.IServices",
                ServicesNamespace      = "Zxw.Framework.Sample.Services"
            };

            IoCContainer.Register(dbContextOption);
            IoCContainer.Register(codeGenerateOption);
            IoCContainer.Register <DefaultDbContext>();

            #region 此段代码在Repository和Service层代码生成之后再启用

            //IoCContainer.RegisterImplementationAssemblyAsInterface("Zxw.Framework.Sample.Repositories", "Zxw.Framework.Sample.IRepositories");
            //IoCContainer.RegisterImplementationAssemblyAsInterface("Zxw.Framework.Sample.Services", "Zxw.Framework.Sample.IServices");

            #endregion

            IoCContainer.Build();
        }
예제 #4
0
        public CodeGenerator(IOptions <CodeGenerateOption> options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            _options = options.Value;
            if (_options.ConnectionString.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException("不指定数据库连接串就生成代码,你想上天吗?");
            }
            if (_options.DbType.IsNullOrWhiteSpace())
            {
                throw new ArgumentNullException("不指定数据库类型就生成代码,你想逆天吗?");
            }
            if (_options.DbType != DatabaseType.SqlServer.ToString())
            {
                throw new ArgumentNullException("这是我的错,目前只支持MSSQL数据库的代码生成!后续更新MySQL");
            }

            var path = AppDomain.CurrentDomain.BaseDirectory;

            if (_options.OutputPath.IsNullOrWhiteSpace())
            {
                _options.OutputPath = path;
            }
            var flag = path.IndexOf("/bin");

            if (flag > 0)
            {
                Delimiter = "/";//如果可以取到值,修改分割符
            }
        }
예제 #5
0
        /// <summary>
        /// IoC初始化
        /// </summary>
        /// <param name="services"></param>
        /// <returns></returns>
        private IServiceProvider InitIoC(IServiceCollection services)
        {
            var connectionString = Configuration.GetConnectionString("MsSqlServer");
            var dbContextOption  = new DbContextOption
            {
                ConnectionString  = connectionString,
                ModelAssemblyName = "Zxw.Framework.Website.Models",
                DbType            = DbType.MSSQLSERVER
            };
            var codeGenerateOption = new CodeGenerateOption
            {
                ModelsNamespace        = "Zxw.Framework.Website.Models",
                IRepositoriesNamespace = "Zxw.Framework.Website.IRepositories",
                RepositoriesNamespace  = "Zxw.Framework.Website.Repositories",
                IServicsNamespace      = "Zxw.Framework.Website.IServices",
                ServicesNamespace      = "Zxw.Framework.Website.Services"
            };

            IoCContainer.Register(Configuration);                                                               //注册配置
            IoCContainer.Register(dbContextOption);                                                             //注册数据库配置信息
            IoCContainer.Register(codeGenerateOption);                                                          //注册代码生成器相关配置信息
            IoCContainer.Register(typeof(DefaultDbContext));                                                    //注册EF上下文
            IoCContainer.Register("Zxw.Framework.Website.Repositories", "Zxw.Framework.Website.IRepositories"); //注册仓储
            IoCContainer.Register("Zxw.Framework.Website.Services", "Zxw.Framework.Website.IServices");         //注册service
            return(IoCContainer.Build(services));
        }
예제 #6
0
 /// <summary>
 /// 静态构造函数:从IoC容器读取配置参数,如果读取失败则会抛出ArgumentNullException异常
 /// </summary>
 static CodeGenerator()
 {
     _option = IoCContainer.Resolve <CodeGenerateOption>();
     if (_option == null)
     {
         throw new ArgumentNullException(nameof(_option));
     }
 }
예제 #7
0
        /// <summary>
        /// 静态构造函数:从IoC容器读取配置参数,如果读取失败则会抛出ArgumentNullException异常
        /// </summary>
        public CodeGenerator(CodeGenerateOption option)
        {
            Option = option;
            //Options = AspectCoreContainer.Resolve<IOptions<CodeGenerateOption>>().Value;
            //if (Options == null)
            //{
            //    throw new ArgumentNullException(nameof(Options));
            //}
            var path = AppDomain.CurrentDomain.BaseDirectory;
            var flag = path.IndexOf("/bin");

            if (flag > 0)
            {
                Delimiter = "/";//如果可以取到值,修改分割符
            }
        }
예제 #8
0
        private static CodeGenerateOption _options; //代码生成选项

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="options"></param>
        public CodeGenerator(IOptions <CodeGenerateOption> options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }
            _options = options.Value;
            foreach (var property in _options.GetType().GetProperties())
            {
                string value = property.GetValue(_options).ToString();
                if (value.IsNullOrWhiteSpace())//判断选项内容是否为空
                {
                    throw new ArgumentNullException(property.Name);
                }
            }
        }
예제 #9
0
 public static void UseCodeGenerator(this IServiceCollection services, CodeGenerateOption option)
 {
     if (option == null)
     {
         throw new ArgumentNullException(nameof(option));
     }
     services.Configure <CodeGenerateOption>(config =>
     {
         config.ControllersNamespace   = option.ControllersNamespace;
         config.IRepositoriesNamespace = option.IRepositoriesNamespace;
         config.IServicesNamespace     = option.IServicesNamespace;
         config.ModelsNamespace        = option.ModelsNamespace;
         config.OutputPath             = option.OutputPath;
         config.RepositoriesNamespace  = option.RepositoriesNamespace;
         config.ServicesNamespace      = option.ServicesNamespace;
         config.ViewModelsNamespace    = option.ViewModelsNamespace;
     });
     services.AddSingleton <IDbFirst, DbFirst.DbFirst>();
     services.AddSingleton <ICodeFirst, CodeFirst.CodeFirst>();
 }
예제 #10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="codeGenerateOption"></param>
 /// <param name="isCoveredExsited">是否覆盖已存在的同名文件</param>
 public CodeGenerator(CodeGenerateOption codeGenerateOption, bool isCoveredExsited = true)
 {
     _codeGenerateOption = codeGenerateOption;
     GenerateTemplateCodesFromDatabase(isCoveredExsited);
 }