void IProviderExtend.CreateForeignKeys(MetaTable metaTable) { //var metaTable = services.Model.GetTable(metaTable); var sqlBuilder = new OracleSqlBuilder(this); var commands = sqlBuilder.GetCreateForeignKeyCommands(metaTable); foreach (var command in commands) { services.Context.ExecuteCommand(command); } }
public void CreateDatabase() { if (DatabaseExists()) { throw SqlClient.Error.CreateDatabaseFailedBecauseSqlCEDatabaseAlreadyExists(dbName); } if (string.IsNullOrEmpty(dbName)) { throw Error.ArgumentNull("Database Name"); } //创建数据库文件 var conn = conManager.UseConnection(this); var transaction = conn.BeginTransaction(); OracleSqlBuilder = new OracleSqlBuilder(this); try { Execute(conn, transaction, OracleSqlBuilder.GetCreateDatabaseCommand(dbName, passowrd)); var commandText = "GRANT DBA TO " + dbName; Execute(conn, transaction, commandText); } catch (Exception) { transaction.Rollback(); throw; } finally { conManager.ReleaseConnection(this); } DbConnectionStringBuilder builder = new OracleConnectionStringBuilder() { DataSource = conn.DataSource, UserID = dbName, Password = passowrd, }; conn = new OracleConnection(builder.ToString()); conn.Open(); transaction = conn.BeginTransaction(); try { MetaModel model = services.Model; foreach (MetaTable table in model.GetTables()) { //string createTableCommand = OracleSqlBuilder.GetCreateTableCommand(table); //if (!string.IsNullOrEmpty(createTableCommand)) // Execute(conn, transaction, createTableCommand); //string createPrimaryKey = OracleSqlBuilder.GetPrimaryKeyCommand(table); //if (!string.IsNullOrEmpty(createPrimaryKey)) // Execute(conn, transaction, createPrimaryKey); var commands = OracleSqlBuilder.GetCreateTableCommands(table); foreach (var command in commands) { Execute(conn, transaction, command); } } //创建外建 foreach (MetaTable table in model.GetTables()) { foreach (string commandText in OracleSqlBuilder.GetCreateForeignKeyCommands(table)) { if (!string.IsNullOrEmpty(commandText)) { Execute(conn, transaction, commandText); } } } ////创建自动编号列 //foreach (MetaTable table in model.GetTables()) //{ // var create = OracleSqlBuilder.GetCreateSquenceCommand(table); // if (!string.IsNullOrEmpty(create)) // Execute(conn, transaction, create); //} transaction.Commit(); } catch { transaction.Rollback(); throw; } finally { conManager.ReleaseConnection(this); } }