public DataFieldKeyAttribute(DataFieldKeys key, string keyName) { this.key = key; switch (key) { case DataFieldKeys.Primary: this.index = new PrimaryKey(); break; case DataFieldKeys.Unique: this.index = new UniqueKey(keyName); break; case DataFieldKeys.Index: this.index = new Index(keyName); break; default: break; } }
public DataFieldInfo(string name, Type type, long length, Index key) { this.fieldName = name; this.fieldType = type; this.fieldLength = length; this.indicies = new List<Index>(); this.indicies.Add(key); if (key != null) { this.key |= key.KeyType; } else { this.key = DataFieldKeys.None; } }
public DataFieldInfo(string name, Type type, long length, Index[] indicies) { this.fieldName = name; this.fieldType = type; this.fieldLength = length; this.indicies = new List<Index>(); this.indicies.AddRange(indicies); foreach (Index index in indicies) { if (key != null) { this.key |= index.KeyType; } } }
public override Dictionary<Index, List<DataField>> GetIndexes(string tableName) { Dictionary<Index, List<DataField>> indexes = new Dictionary<Index, List<DataField>>(4); DataTable fieldTable = SelectQuery(string.Format("SHOW INDEXES FROM `{0}`", Mysql.Escape(tableName))); foreach (DataRow dr in fieldTable.Rows) { DataField df = new DataField((string)dr["Table"], (string)dr["Column_name"]); string key = (string)dr["Key_name"]; Index index = null; if ((long)dr["Non_unique"] == 0) { if (key == "PRIMARY") { index = new PrimaryKey(); } else { index = new UniqueKey(key); } } else { index = new Index(key); } if (indexes.ContainsKey(index) == false) { indexes.Add(index, new List<DataField>()); } indexes[index].Add(df); } return indexes; }