public async Task TestMultiInsert(int max) { var repository = new MongoDBRepository(); var tasks = new List<Task<BaseEntity>>(); for (int count = 0; count < max; count++) { tasks.Add(repository.Insert(new BaseEntity() { Name = String.Format("Alice{0}",count) })); } var names = new List<string>(); // Run collection of Inserts concurrently foreach (var bucket in TaskProcessor.Interleaved(tasks)) { var t = await bucket; try { var entity = await t; names.Add(entity.Name); } catch (OperationCanceledException) { } catch (Exception exc) { Debug.WriteLine(exc); } } Assert.Equal(max, names.Count); }
static void Main(string[] args) { BusinessLog user = new BusinessLog() { Data = "张三", CreateTime = DateTime.Now }; IMongoDBRepository<BusinessLog> mongoDbRepository = new MongoDBRepository<BusinessLog>(); mongoDbRepository.Insert(user); Console.Read(); }
public void ConfigureRequestProcTime(IAppBuilder app) { RequestProcTimeOption requestProcTimeOption = new RequestProcTimeOption(); requestProcTimeOption.RequestProcTimeAction = (data) => { var messageInfo = new MessageInfo(); messageInfo.Message = "请求时间日志"; messageInfo.Body = data; messageInfo.Action = (messageData) => { var bodyData = messageData.Body as RequestProcData; if (bodyData == null) return; //var requestProcTimeLog = new RequestProcTimeLog //{ // BeginRequestDateTime = bodyData.BeginRequestDateTime, // EndRequestDateTime = bodyData.EndRequestDateTime, // RequestIp = bodyData.RequestIp, // RequestResponseInterval = bodyData.RequestResponseInterval, // RequestUrl = bodyData.RequestUrl //}; var requestProcTimeLog = Mapper.MapNew<RequestProcData, RequestProcTimeLog>(bodyData); var mongoDbRepository = new MongoDBRepository<RequestProcTimeLog>(); mongoDbRepository.Insert(requestProcTimeLog); }; QueueManagement.getInstance().PushData(messageInfo); }; app.UseRequestProcTime(requestProcTimeOption); }
public void Insert() { var newUser = new User { FirstName = "Harry", LastName = "Potter", Age = 10 }; var id = _userRepository.Insert(newUser); var insertedUser = _userRepository.GetById(id); Assert.IsNotNull(insertedUser); InsertMany(); }
public void ConfigureRequestLog(IAppBuilder app) { var requestLogOption = new RequestLogOption(); requestLogOption.RequestLogProceAction = (data) => { var messageInfo = new MessageInfo(); messageInfo.Message = "请求日志"; messageInfo.Body = data; messageInfo.Action = (messageData) => { var bodyData = messageData.Body as RequestLogData; if (bodyData == null) return; var requestDataLog = Mapper.MapNew<RequestLogData, RequestDataLog>(bodyData); var mongoDbRepository = new MongoDBRepository<RequestDataLog>(); mongoDbRepository.Insert(requestDataLog); }; QueueManagement.getInstance().PushData(messageInfo); LogManager.getInstance().WriteRequestLog(messageInfo.Message); }; app.UseRequestLog(requestLogOption); }
public async Task TestInsert() { var repository = new MongoDBRepository(); var entity = await repository.Insert(new BaseEntity() { Name = "Alice" }); Assert.Equal<string>("Alice", entity.Name); }
public override void OnException(HttpActionExecutedContext actionExecutedContext) { var exception = actionExecutedContext.Exception; HttpResponseMessage httpResponseMessage; var dataResult = new DataResult(); LogManager.getInstance().WriteException("SysLog", exception); bool isEMail = false; #region 异常处理 if (exception is BusinessException) { dataResult.Code = ResponseStatusCode.Error; dataResult.Msg = exception.Message; httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult); } else if (exception is AccountLoginInOtherPlacesException) { dataResult.Code = ResponseStatusCode.Error_NeedReLogin; dataResult.Msg = exception.Message; httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Unauthorized, dataResult); } else if (exception is UseStatusException) { dataResult.Code = ResponseStatusCode.Error_UseStatus; dataResult.Msg = exception.Message; httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Unauthorized, dataResult); } else if (exception is AuthorizeException) { isEMail = true; dataResult.Code = ResponseStatusCode.Error_Unauthorized; dataResult.Msg = exception.Message; httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Unauthorized, dataResult); } else if (exception is DataOperationPermissions) { isEMail = true; dataResult.Code = ResponseStatusCode.Error_Forbidden; dataResult.Msg = exception.Message; httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Forbidden, dataResult); } else if (exception is DataValidationException) { dataResult.Code = ResponseStatusCode.Error; dataResult.Msg = exception.Message; httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult); } else if (exception is QueryArgumentException) { dataResult.Code = ResponseStatusCode.Error; dataResult.Msg = exception.Message; httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult); } else if (exception is ArgumentException) { dataResult.Code = ResponseStatusCode.Error; dataResult.Msg = exception.Message; httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult); } else if (exception is DataConcurrencyException) { dataResult.Code = ResponseStatusCode.Error_Concurrency; dataResult.Msg = exception.Message; httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.Conflict, dataResult); } else { isEMail = true; dataResult.Code = ResponseStatusCode.Error; dataResult.Msg = "系统异常,请联系管理员"; httpResponseMessage = actionExecutedContext.Request.CreateResponse(HttpStatusCode.BadRequest, dataResult); } #endregion actionExecutedContext.Response = httpResponseMessage; var messageInfo = new MessageInfo(); messageInfo.Message = "异常信息"; messageInfo.Body = exception; messageInfo.Action = (messageData) => { var bodyData = messageData.Body as Exception; if (bodyData == null) return; var exceptionLog = LogEntityUtils.GetExceptionLog(bodyData); var mongoDbRepository = new MongoDBRepository<ExceptionLog>(); mongoDbRepository.Insert(exceptionLog); MailHelper.SendEmail(bodyData); }; QueueManagement.getInstance().PushData(messageInfo); base.OnException(actionExecutedContext); }
/// <summary> /// 动态加载配置方法 /// </summary> public void Configuration() { ServcieBeheavior.Func = (input, getNext) => { var servcieExecuteLog=new ServcieExecuteLog(); var dictionary=new Dictionary<string, object>(); for (var i = 0; i < input.Arguments.Count; i++) { dictionary.Add("arg"+(i+1),input.Arguments[i]); } servcieExecuteLog.ExcecuteArguments = JsonConvert.SerializeObject(dictionary); servcieExecuteLog.BeginExecuteDateTime = DateTime.Now; var result = getNext().Invoke(input, getNext); servcieExecuteLog.EndExecuteDateTime = DateTime.Now; servcieExecuteLog.ExecuteInterval = servcieExecuteLog.EndExecuteDateTime - servcieExecuteLog.BeginExecuteDateTime; if (result.Exception != null) { } var messageInfo = new MessageInfo(); messageInfo.Message = "服务执行日志"; messageInfo.Body = servcieExecuteLog; messageInfo.Action = (messageData) => { var bodyData = messageData.Body as ServcieExecuteLog; if (bodyData == null) return; var mongoDbRepository = new MongoDBRepository<ServcieExecuteLog>(); mongoDbRepository.Insert(bodyData); }; QueueManagement.getInstance().PushData(messageInfo); //注:以下处理正式情况不会影响 太大性能 // 但为了 不占方法执行更多性能 这里采用异步方式 //Task.Factory.StartNew(data => //{ // var messageInfo = new MessageInfo(); // messageInfo.Message = "服务执行日志"; // messageInfo.Body = data; // messageInfo.Action = (messageData) => // { // var bodyData = messageData.Body as ServcieExecuteLog; // if (bodyData == null) return; // var mongoDbRepository = new MongoDBRepository<ServcieExecuteLog>(); // mongoDbRepository.Insert(bodyData); // }; // QueueManagement.getInstance().PushData(messageInfo); //}, servcieExecuteLog); return result; }; ServiceLocator.Regist(container => { container.RegisterType(typeof(IUserService), typeof(UserService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(IBranchService), typeof(BranchService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(IContractService), typeof(ContractService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(IMenuService), typeof(MenuService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(ISpecialService), typeof(SpecialService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(IPaymentService), typeof(PaymentService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(IInvoiceService), typeof(InvoiceService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(IShortMessageService), typeof(ShortMessageService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(ICollectInvoiceService), typeof(CollectInvoiceService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(IGatheringService), typeof(GatheringService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(IDebitService), typeof(DebitService), new InterceptionArguments<ServcieBeheavior>()); container.RegisterType(typeof(InsuranceInterfaceService), typeof(InsuranceService), new InterceptionArguments<ServcieBeheavior>()); }); }