// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { /* NLog */ this._env.ConfigureNLog(Path.Combine("configs", "nlog.config")); loggerFactory.AddNLog(); app.AddNLogWeb(); Globals.Services = app.ApplicationServices; //RedisHelper.Initialization( //csredis: new CSRedis.CSRedisClient("192.168.1.198:6379,pass=123,defaultDatabase=13,poolsize=50,ssl=false,writeBuffer=10240,prefix=key"), //serialize: value => Newtonsoft.Json.JsonConvert.SerializeObject(value), //deserialize: (data, type) => Newtonsoft.Json.JsonConvert.DeserializeObject(data, type)); MrcMapper.InitializeMap(); /* 初始化 AutoMapper */ if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseAuthentication(); app.UseSession(); app.UseResponseCaching(); app.UseWriteLoginInfo();//登陆信息 app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); routes.MapRoute( name: "areaname", template: "{Admin:exists}/{controller=Home}/{action=Index}/{id?}"); routes.MapAreaRoute( name: "Admin", areaName: "Admin", template: "Admin/{controller=Home}/{action=Index}" ); }); }
/// <summary> /// 传入一个 dto 对象插入数据。dto 需要与实体建立映射关系,否则会报错 /// </summary> /// <typeparam name="TEntity"></typeparam> /// <typeparam name="TDto"></typeparam> /// <param name="dbContext"></param> /// <param name="dto"></param> /// <returns></returns> public static TEntity InsertFromDto <TEntity, TDto>(this IDbContext dbContext, TDto dto) { /* * 支持自动设置 主键=guid * 支持自动设置 CreationTime=DateTime.Now * 支持自动设置 IsDeleted=false */ Utils.CheckNull(dto); TEntity entity = MrcMapper.Map <TEntity>(dto); Type entityType = typeof(TEntity); TypeDescriptor typeDescriptor = TypeDescriptor.GetDescriptor(entityType); /* 设置 主键=guid */ if (typeDescriptor.PrimaryKeys.Count < 2) /* 只有无主键或单一主键的时候 */ { MappingMemberDescriptor primaryKeyDescriptor = typeDescriptor.PrimaryKeys.FirstOrDefault(); if (primaryKeyDescriptor != null && primaryKeyDescriptor.IsAutoIncrement == false) { var keyValue = primaryKeyDescriptor.GetValue(entity); if (keyValue.IsDefaultValueOfType(primaryKeyDescriptor.MemberInfoType) || string.Empty.Equals(keyValue)) { /* 如果未设置主键值,则自动设置为 guid */ if (primaryKeyDescriptor.MemberInfoType == typeof(string)) { primaryKeyDescriptor.SetValue(entity, IdHelper.CreateSnowflakeId().ToString()); } else if (primaryKeyDescriptor.MemberInfoType.GetUnderlyingType() == typeof(Guid)) { primaryKeyDescriptor.SetValue(entity, Guid.NewGuid()); } } } } /* 设置 CreationTime=DateTime.Now */ SetValueIfNeeded(entity, typeDescriptor, "CreationTime", DateTime.Now); /* 设置 IsDeleted=false */ SetValueIfNeeded(entity, typeDescriptor, "IsDeleted", false); return(dbContext.Insert(entity)); }