Esempio n. 1
0
        protected override void Load(ContainerBuilder builder)
        {
            IFreeSql fsql = new FreeSqlBuilder()
                            .UseConnectionString(Appsettings.Configuration)
                            .UseNameConvert(NameConvertType.PascalCaseToUnderscoreWithLower)
                            .UseAutoSyncStructure(true)
                            .UseNoneCommandParameter(true)
                            .UseMonitorCommand(cmd =>
            {
                Trace.WriteLine(cmd.CommandText + ";");
            }
                                               )
                            .CreateDatabaseIfNotExists()
                            .Build()
                            .SetDbContextOptions(opt =>
            {
                opt.EnableAddOrUpdateNavigateList = true;
                opt.OnEntityChange = rep =>
                {
                    //进行审计
                };
            });  //联级保存功能开启(默认为关闭)

            fsql.Aop.CurdAfter += (s, e) =>
            {
                Log.Debug($"ManagedThreadId:{Thread.CurrentThread.ManagedThreadId}: FullName:{e.EntityType.FullName}" + $" ElapsedMilliseconds:{e.ElapsedMilliseconds}ms, {e.Sql}");

                if (e.ElapsedMilliseconds > 200)
                {
                    //记录日志
                    //发送短信给负责人
                }
            };
            builder.RegisterInstance(fsql).SingleInstance();                            //FreeSql注册为单例
            builder.RegisterType(typeof(UnitOfWorkManager)).InstancePerLifetimeScope(); //工作单元注册为scope
            fsql.GlobalFilter.Apply <IDeleteAduitEntity>("IsDeleted", a => a.IsDeleted == false);

            try
            {
                using var objPool = fsql.Ado.MasterPool.Get();
            }
            catch (Exception e)
            {
                Log.Logger.Error(e + e.StackTrace + e.Message + e.InnerException);
                return;
            }

            //在运行时直接生成表结构
            try
            {
                fsql.CodeFirst
                .SeedData()
                .SyncStructure(DomainReflexUtil.GetTypesByTableAttribute());
            }
            catch (Exception e)
            {
                Log.Logger.Error(e + e.StackTrace + e.Message + e.InnerException);
            }
        }
Esempio n. 2
0
        public async Task StartAsync(CancellationToken cancellationToken = default)
        {
            try
            {
                using var scope = _serviceProvider.CreateScope();
                IDataSeedContributor dataSeedContributor = scope.ServiceProvider.GetRequiredService <IDataSeedContributor>();

                var permissions = DomainReflexUtil.GetAssemblyPermissionAttributes();
                await dataSeedContributor.InitPermissionAsync(permissions);

                await dataSeedContributor.InitAdministratorPermissionAsync();
            }
            catch (Exception ex)
            {
                _logger.LogError($"初始化数据失败!!!{ex.Message}{ex.StackTrace}{ex.InnerException}");
            };
        }