本文整理汇总了C#中TableSchema.IsIndexExist方法的典型用法代码示例。如果您正苦于以下问题:C# TableSchema.IsIndexExist方法的具体用法?C# TableSchema.IsIndexExist怎么用?C# TableSchema.IsIndexExist使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TableSchema
的用法示例。
在下文中一共展示了TableSchema.IsIndexExist方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: LoadSchema
public static DBSchema LoadSchema(string connStr)
{
var dbsc = new DBSchema();
var catalog = (Catalog)new CatalogClass();
var conn = new ConnectionClass();
try
{
var csb = new JetConnectionStringBuilder(connStr);
var keysList = new List<KeySchema>();
var indexesList = new List<IndexSchema>();
conn.Open(csb.ConnectionString, string.Empty, string.Empty, 0);
catalog.ActiveConnection = conn;
var slashPos = csb.DataSource.LastIndexOf(@"\");
dbsc.Name = csb.DataSource.Substring(slashPos == -1 ? 0 : slashPos + 1);
foreach (var xTable in GetTables(catalog))
{
keysList.Clear();
indexesList.Clear();
var eTable = new TableSchema
{
Name = xTable.Name,
Columns = GetColumns(xTable).ToArray(),
Keys = GetKeys(xTable).ToArray(),
Indexes = GetIndexes(xTable).ToArray()
};
// Фильтрация ключей
foreach (var key in eTable.Keys)
{
// Долбаный Аксес создает при создании внешних ключей уникальные индексы.
if (key.KeyType == ConstraintType.KeyForeign && !eTable.IsIndexExist(key.Name))
continue;
if (key.KeyType == ConstraintType.Unique &&
eTable.IsKeyExist(key.Name, ConstraintType.KeyForeign))
continue;
keysList.Add(key);
}
eTable.Keys = keysList.ToArray();
// Фильтрация индексов
foreach (var index in eTable.Indexes)
{
if (eTable.IsKeyExist(index.Name, ConstraintType.Unique) ||
eTable.IsKeyExist(index.Name, ConstraintType.KeyPrimary) ||
eTable.IsKeyExist(index.Name, ConstraintType.KeyForeign))
continue;
indexesList.Add(index);
}
eTable.Indexes = indexesList.ToArray();
dbsc.Tables.Add(eTable);
}
}
finally
{
Marshal.ReleaseComObject(conn);
Marshal.ReleaseComObject(catalog);
}
return dbsc;
}