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 = "/";//如果可以取到值,修改分割符 } }
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 = "/";//如果可以取到值,修改分割符 } }
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(); }
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 = "/";//如果可以取到值,修改分割符 } }
/// <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)); }
/// <summary> /// 静态构造函数:从IoC容器读取配置参数,如果读取失败则会抛出ArgumentNullException异常 /// </summary> static CodeGenerator() { _option = IoCContainer.Resolve <CodeGenerateOption>(); if (_option == null) { throw new ArgumentNullException(nameof(_option)); } }
/// <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 = "/";//如果可以取到值,修改分割符 } }
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); } } }
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>(); }
/// <summary> /// /// </summary> /// <param name="codeGenerateOption"></param> /// <param name="isCoveredExsited">是否覆盖已存在的同名文件</param> public CodeGenerator(CodeGenerateOption codeGenerateOption, bool isCoveredExsited = true) { _codeGenerateOption = codeGenerateOption; GenerateTemplateCodesFromDatabase(isCoveredExsited); }