// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { //ConnectionStrings services.Configure <ConnectionStringCollection>(Configuration.GetSection("ConnectionStrings")); //AppSettings services.Configure <AppSettingsString>(Configuration.GetSection("AppSettings")); //添加Swagger //services.AddSwaggerGen(p => //{ // p.SwaggerDoc("v1", new Info { Title = "SwaggerExemple", Version = "v1" }); // p.IncludeXmlComments(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Edu.Swagger.xml")); //}); //注册仓储 services.AddDataService(); //配置数据库实体映射程序集 //DapperExtensions 相关设置:1.实体映射器,2.实体映射查找程序集列表,2.sql方言,用于不同数据库sql脚本的生成 DapperExtensions.DapperExtensions.Configure(typeof(DapperExtensions.Mapper.DefaultClassMapper <>), null, new DapperExtensions.Sql.MySqlDialect()); //注册数据库访问服务 services.AddScoped <IUnitOfWorkDefaultContext, UnitOfWorkDefaultContext>(s => { //数据库连接配置 var connectionString = new ConnectionStringSettings(); var connOptions = s.GetService <IOptions <ConnectionStringCollection> >().Value; //if (connOptions == null || connOptions.Count < 3) // throw new System.Exception("请先配置数据库连接或数据库连接数不对"); connectionString.ConnectionString = connOptions[0].DefaultConn; connectionString.ProviderName = connOptions[0].ProviderName; return(new UnitOfWorkDefaultContext(connectionString)); }); #region 注册数据提供程序工厂类 DbProviderFactoryCollection dbProviderFactories = Configuration.GetSection("DbProviderFactories").Get <DbProviderFactoryCollection>(); //注册数据提供程序工厂类 if (dbProviderFactories != null && dbProviderFactories.Count > 0) { foreach (var item in dbProviderFactories) { DbProviderFactories.RegisterFactory(item.ProviderInvariantName, item.TypeName); } } #endregion //添加对AutoMapper的支持 Mapper.Initialize(map => { map.AddProfile <UserProfile>(); }); services.AddMvc(options => { options.Filters.Add <ExceptionHandleAttribute>(); options.Filters.Add <ActionPackageFilter>(); }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2) //修改.net core默认的json默认命名规则 .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new DefaultContractResolver(); options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; });; }
/// <summary> /// This method gets called by the runtime. Use this method to add services to the container. /// </summary> /// <param name="services"></param> public void ConfigureServices(IServiceCollection services) { //ConnectionStrings services.Configure <ConnectionStringCollection>(Configuration.GetSection("ConnectionStrings")); //AppSettings services.Configure <AppSettingsString>(Configuration.GetSection("AppSettings")); //合并swagger文件 SwaggerXmlMerge.SwaggerMerge(); services.AddSwaggerGen(c => { var provider = services.BuildServiceProvider().GetRequiredService <IApiVersionDescriptionProvider>(); foreach (var item in provider.ApiVersionDescriptions) { c.SwaggerDoc(item.GroupName, new Info { Title = $"WebApi v{item.ApiVersion}", Version = item.ApiVersion.ToString(), Description = "多版本管理(点击右上角切换版本)<br/>" }); } //c.SwaggerDoc("v1", // new Info // { // Version = "v1", // Title = "接口文档案例", // Description = " V 1.0 版本接口说明 ", // Contact = new Contact // { // Email = "*****@*****.**", // Name = "faith", // Url = "www.abc.com" // } // }); c.OperationFilter <SwaggerDefaultValues>(); // 下面三个方法为 Swagger JSON and UI设置xml文档注释路径 var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location); //获取应用程序所在目录(绝对,不受工作目录影响,建议采用此方法获取路径) //var xmlPath = Path.Combine(basePath, "WebApiExemple.xml"); var xmlPath = Path.Combine(basePath, "Main.xml"); c.IncludeXmlComments(xmlPath); }); //注册仓储 services.AddDataService(); //配置数据库实体映射程序集 //DapperExtensions 相关设置:1.实体映射器,2.实体映射查找程序集列表,2.sql方言,用于不同数据库sql脚本的生成 DapperExtensions.DapperExtensions.Configure(typeof(DapperExtensions.Mapper.DefaultClassMapper <>), null, new DapperExtensions.Sql.MySqlDialect()); //注册数据库访问服务 services.AddScoped <IUnitOfWorkDefaultContext, UnitOfWorkDefaultContext>(s => { //数据库连接配置 var connectionString = new ConnectionStringSettings(); var connOptions = s.GetService <IOptions <ConnectionStringCollection> >().Value; //if (connOptions == null || connOptions.Count < 3) // throw new System.Exception("请先配置数据库连接或数据库连接数不对"); connectionString.ConnectionString = connOptions[0].DefaultConn; connectionString.ProviderName = connOptions[0].ProviderName; return(new UnitOfWorkDefaultContext(connectionString)); }); #region 注册数据提供程序工厂类 DbProviderFactoryCollection dbProviderFactories = Configuration.GetSection("DbProviderFactories").Get <DbProviderFactoryCollection>(); //注册数据提供程序工厂类 if (dbProviderFactories != null && dbProviderFactories.Count > 0) { foreach (var item in dbProviderFactories) { DbProviderFactories.RegisterFactory(item.ProviderInvariantName, item.TypeName); } } #endregion //添加对AutoMapper的支持 Mapper.Initialize(map => { map.AddProfile <UserProfile>(); }); #region Mvc服务 services.AddMvc(options => { options.Filters.Add <ExceptionHandleAttribute>(); options.Filters.Add <ActionPackageFilter>(); }).SetCompatibilityVersion(CompatibilityVersion.Version_2_2); //版本控制 services.AddApiVersioning(o => { // allow a client to call you without specifying an api version // since we haven't configured it otherwise, the assumed api version will be 1.0 o.AssumeDefaultVersionWhenUnspecified = true; o.ReportApiVersions = false; }); services.AddVersionedApiExplorer(o => { // api 版本分组名称 o.GroupNameFormat = "'v'V"; //未指定 API 版本时,设置 API 版本为默认的版本 o.AssumeDefaultVersionWhenUnspecified = true; }); #endregion }