private void AutoCreateTablesIfBrandNew() { if (!_databaseSettings.AutomaticCreateTable) { return; } _databaseEngine.GetDatabaseNames().ForEach(databaseName => { TransactionContext transactionContext = BeginTransaction(databaseName, IsolationLevel.Serializable); try { SystemInfo sys = _databaseEngine.GetSystemInfo(databaseName, transactionContext.Transaction); //表明是新数据库 if (sys.Version == 0) { if (_databaseSettings.Version != 1) { Rollback(transactionContext); throw new DatabaseException($"Database:{databaseName} does not exists, database Version must be 1"); } CreateTablesByDatabase(databaseName, transactionContext); _databaseEngine.UpdateSystemVersion(databaseName, 1, transactionContext.Transaction); } Commit(transactionContext); } catch (Exception ex) { Rollback(transactionContext); throw new DatabaseException($"Auto Create Table Failed, Database:{databaseName}, Reason:{ex.Message}", ex); } }); }