public static void GenerateDb() { if (ConfigurationHelper.GetAppSettingOrDefault("单元测试-生成数据库", false)) { if (ClearDb && ConfigurationHelper.GetAppSettingOrDefault("单元测试-生成数据库-先清空数据库", false)) { //不想手工去删除数据库,可以使用下面这个方法来在程序中删除所有的表。 DropAllTables(); ClearDb = false; } using (var c = new RafyDbMigrationContext(DbSettingNames.DbMigrationHistory)) { c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } using (var c = new RafyDbMigrationContext(DbSettingNames.RafyPlugins)) { c.HistoryRepository = new DbHistoryRepository(); c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } using (var c = new RafyDbMigrationContext(UnitTestEntityRepositoryDataProvider.DbSettingName)) { c.HistoryRepository = new DbHistoryRepository(); c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } UnitTestPlugin.InitailizeSequences(); using (RdbDataProvider.RedirectDbSetting( UnitTestEntityRepositoryDataProvider.DbSettingName, UnitTestEntityRepositoryDataProvider.DbSettingName_Duplicate )) { using (var c = new RafyDbMigrationContext(UnitTestEntityRepositoryDataProvider.DbSettingName_Duplicate)) { c.ClassMetaReader.EntityDbSettingName = UnitTestEntityRepositoryDataProvider.DbSettingName; c.ClassMetaReader.IsGeneratingForeignKey = false; c.HistoryRepository = new DbHistoryRepository(); c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } UnitTestPlugin.InitailizeSequences(); } using (var c = new RafyDbMigrationContext(UnitTest2EntityRepositoryDataProvider.DbSettingName)) { c.HistoryRepository = new DbHistoryRepository(); c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } using (var c = new RafyDbMigrationContext(StringTestEntityDataProvider.DbSettingName)) { c.HistoryRepository = new DbHistoryRepository(); c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } } }
public static void GenerateDb() { if (ConfigurationHelper.GetAppSettingOrDefault("Test_GenerateDb", false)) { //生成数据库时,为简单起见,需要先加载所有的插件。 //注意,此行代码会导致按需加载的单元测试全部通过。 //所以平时应该通过配置文件来关闭数据库生成功能。 RafyEnvironment.EnsureAllPluginsLoaded(); ForceAllPluginsLoaded = true; if (ClearDb && ConfigurationHelper.GetAppSettingOrDefault("Test_GenerateDb_Clear", false)) { //不想手工去删除数据库,可以使用下面这个方法来在程序中删除所有的表。 DropAllTables(); ClearDb = false; } using (var c = new RafyDbMigrationContext(DbSettingNames.DbMigrationHistory)) { c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } using (var c = new RafyDbMigrationContext(DbSettingNames.RafyPlugins)) { if (c.DbSetting.ProviderName != DbSetting.Provider_SQLite) { c.HistoryRepository = new DbHistoryRepository(); } c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } using (var c = new RafyDbMigrationContext(UnitTestEntityRepositoryDataProvider.DbSettingName)) { if (c.DbSetting.ProviderName != DbSetting.Provider_SQLite) { c.HistoryRepository = new DbHistoryRepository(); } c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } UnitTestPlugin.InitailizeSequences(); using (RdbDataProvider.RedirectDbSetting( UnitTestEntityRepositoryDataProvider.DbSettingName, UnitTestEntityRepositoryDataProvider.DbSettingName_Duplicate )) { using (var c = new RafyDbMigrationContext(UnitTestEntityRepositoryDataProvider.DbSettingName_Duplicate)) { c.ClassMetaReader.EntityDbSettingName = UnitTestEntityRepositoryDataProvider.DbSettingName; c.ClassMetaReader.IsGeneratingForeignKey = false; if (c.DbSetting.ProviderName != DbSetting.Provider_SQLite) { c.HistoryRepository = new DbHistoryRepository(); } c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } UnitTestPlugin.InitailizeSequences(); } using (var c = new RafyDbMigrationContext(UnitTest2EntityRepositoryDataProvider.DbSettingName)) { if (c.DbSetting.ProviderName != DbSetting.Provider_SQLite) { c.HistoryRepository = new DbHistoryRepository(); } c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } using (var c = new RafyDbMigrationContext(StringTestEntityDataProvider.DbSettingName)) { if (c.DbSetting.ProviderName != DbSetting.Provider_SQLite) { c.HistoryRepository = new DbHistoryRepository(); } c.RunDataLossOperation = DataLossOperation.All; c.AutoMigrate(); } } }