private void SetForeignKey(OracleTableSchema oracleTable) { if (oracleTable == null) { return; } if (oracleTable.Columns == null || oracleTable.Columns.Count <= 0) { SetColumns(oracleTable); } string sql = @"SELECT UCC.CONSTRAINT_NAME, UCC.COLUMN_NAME,UC1.TABLE_NAME FOREIGN_TABLE_NAME FROM USER_CONSTRAINTS UC LEFT JOIN USER_CONS_COLUMNS UCC ON UC.CONSTRAINT_NAME = UCC.CONSTRAINT_NAME LEFT JOIN USER_CONSTRAINTS UC1 ON UC.R_CONSTRAINT_NAME=UC1.CONSTRAINT_NAME WHERE UC.CONSTRAINT_TYPE = 'R' AND UC.TABLE_NAME =:TABLE_NAME"; OracleParameter para = new OracleParameter("TABLE_NAME", oracleTable.Name.ToUpper()); DbHelper helper = new DbHelper(this._connectionString); var table = helper.ListBySql(sql, para); oracleTable.ForiegnKeys = new List <Common.ForeignKey>(); foreach (DataRow row in table.Rows) { string column_name = row["COLUMN_NAME"] + string.Empty; string constraint_name = row["CONSTRAINT_NAME"] + string.Empty; Common.ForeignKey key = new Common.ForeignKey(); key.Columns = new ColumnCollection(); key.ConstraintName = constraint_name; if (key.ForeignTable == null && ContainForeignTable) { string forignTable = row["FOREIGN_TABLE_NAME"] + string.Empty; var fac = new OracleDataFactory(this._connectionString); fac.ContainForeignTable = false; key.ForeignTable = fac.GetTableSchema(forignTable); } key.Columns.Add(oracleTable.Columns.Find(it => it.Name == column_name)); oracleTable.ForiegnKeys.Add(key); } }
public static DataFactory GetDataFactory(ConnectionSetting setting) { DataFactory factory = null; switch (setting.Provider) { case DatabaseType.Oracle: factory = new OracleProvider.OracleDataFactory(setting.ConnectionString); break; case DatabaseType.Mssql: factory = new MssqlProvider.SqlServerDataFactory(setting.ConnectionString); break; case DatabaseType.MySQL: factory = new MySQLProvider.MySQLDataFactory(setting.ConnectionString); break; default: break; } return(factory); }