public void ExecuteMigration() { List <IMigration> migrations = new List <IMigration>(); var types = this.GetType().Assembly.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IMigration))); types.ToList().ForEach(t => { migrations.Add(System.Activator.CreateInstance(t) as IMigration); }); IDbConnection conn = null; try { conn = DbConnectionFactory.GetDatabaseMysqlConnection(); var currentVersion = repository.GetMaxVersion(); if (currentVersion == -1) //建库 { var createDbConnection = DbConnectionFactory.GetMysqlConnection(); try { var dbCreatorType = this.GetType().Assembly.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(IDbCreator))); var dbCreator = System.Activator.CreateInstance(dbCreatorType.FirstOrDefault()) as IDbCreator; dbCreator.Execute(createDbConnection); } catch (Exception) { } finally { createDbConnection.Close(); } } migrations.Where(p => p.Version > currentVersion).OrderBy(p => p.Version).ToList().ForEach(migration => { migration.Execute(conn); }); } catch (Exception ex) { Console.WriteLine(ex); } finally { if (conn != null) { conn.Close(); } } }
protected override void Configure() { var builder = new ContainerBuilder(); //注册实例 builder.RegisterType <WindowManager>().As <IWindowManager>().SingleInstance(); builder.RegisterType <DbConnectionProvider>().As <IDbConnectionProvider>(); #region 注册View ViewModel builder.RegisterType <ShellViewModel>().AsSelf(); #endregion #region 通过程序集注册服务 //通过程序集注册应用服务和仓储 var files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.dll"); List <Assembly> list = new List <Assembly>(); foreach (var file in files) { Assembly assembly = Assembly.LoadFile(file); if (assembly.FullName.Contains("Application") || assembly.FullName.Contains("Infrastructure") || assembly.FullName.Contains("Domain")) { list.Add(assembly); } } builder.RegisterAssemblyTypes(list.ToArray()).AsImplementedInterfaces() .As <ITransientDependency>(); //只注册继承自ITransientDependency接口的实例 builder.RegisterAssemblyTypes(list.ToArray()).AsImplementedInterfaces() .As <ISingletonDependency>().SingleInstance(); //注册为单例 #endregion //注册应用程序服务 builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).AsImplementedInterfaces() .As <ITransientDependency>(); builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly()).AsImplementedInterfaces() .As <ISingletonDependency>().SingleInstance(); #region 注册仓储 var dbConnection = DbConnectionFactory.GetDatabaseMysqlConnection(); builder.RegisterInstance <DbConnection>(dbConnection); //注册单元模式 builder.RegisterType(typeof(UnitOfWork)).AsImplementedInterfaces(); //注册默认的仓储(泛型类注册) builder.RegisterGeneric(typeof(DapperRepositoryBase <>)).As(typeof(IRepository <>)); #endregion this.container = builder.Build(); var service1 = container.Resolve <IRootSerivce>(); var service2 = container.Resolve <ITestService>(); //automapper Mapper.Initialize((config) => { WordRecoder.Application.MapperCreator.GetProfile().ForEach(p => { config.AddProfile(p); }); MapperCreator.GetProfile().ForEach(p => { config.AddProfile(p); }); }); }