本文整理汇总了C#中IGenerator.GenerateForeignKeyDrop方法的典型用法代码示例。如果您正苦于以下问题:C# IGenerator.GenerateForeignKeyDrop方法的具体用法?C# IGenerator.GenerateForeignKeyDrop怎么用?C# IGenerator.GenerateForeignKeyDrop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IGenerator
的用法示例。
在下文中一共展示了IGenerator.GenerateForeignKeyDrop方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateDiffScript
//.........这里部分代码省略.........
if (!sourceColumn.ColumnHasDefault && targetColumn.ColumnHasDefault)
{
generator.GenerateColumnDropDefaultScript(sourceColumn);
}
// If both columns have defaults, but they are different
if ((sourceColumn.ColumnHasDefault && targetColumn.ColumnHasDefault) && (sourceColumn.ColumnDefault != targetColumn.ColumnDefault))
{
generator.GenerateColumnSetDefaultScript(sourceColumn);
}
}
//Check primary keys
List<PrimaryKey> sourcePK = sourceRepository.GetAllPrimaryKeys().Where(p => p.TableName == tableName).ToList();
List<PrimaryKey> targetPK = targetRepository.GetAllPrimaryKeys().Where(p => p.TableName == tableName).ToList();
// Add the PK
if (targetPK.Count == 0 && sourcePK.Count > 0)
{
generator.GeneratePrimaryKeys(tableName);
}
// Do we have the same columns, if not, drop and create.
if (sourcePK.Count > 0 && targetPK.Count > 0)
{
if (sourcePK.Count == targetPK.Count)
{
//Compare columns
for (int i = 0; i < sourcePK.Count; i++)
{
if (sourcePK[i].ColumnName != targetPK[i].ColumnName)
{
generator.GeneratePrimaryKeyDrop(sourcePK[i], tableName);
generator.GeneratePrimaryKeys(tableName);
break;
}
}
}
// Not same column count, just drop and create
else
{
generator.GeneratePrimaryKeyDrop(sourcePK[0], tableName);
generator.GeneratePrimaryKeys(tableName);
}
}
// Check indexes
List<Index> sourceIXs = sourceRepository.GetIndexesFromTable(tableName);
List<Index> targetIXs = targetRepository.GetIndexesFromTable(tableName);
// Check added indexes (by name only)
foreach (var index in sourceIXs)
{
var targetIX = targetIXs.Where(s => s.IndexName == index.IndexName);
if (targetIX.Count() == 0)
{
generator.GenerateIndexScript(index.TableName, index.IndexName);
}
}
// Check foreign keys
List<Constraint> sourceFKs = sourceRepository.GetAllForeignKeys(tableName);
List<Constraint> targetFKs = targetRepository.GetAllForeignKeys(tableName);
// Check added foreign keys (by name only)
foreach (var fk in sourceFKs)
{
Constraint targetFK = targetFKs.Where(s => s.ConstraintName == fk.ConstraintName).SingleOrDefault();
if (targetFK == null)
{
generator.GenerateForeignKey(fk);
}
}
// Check deleted FKs (by name only)
foreach (var fk in targetFKs)
{
Constraint sourceFK = sourceFKs.Where(s => s.ConstraintName == fk.ConstraintName).SingleOrDefault();
if (sourceFK == null)
{
generator.GenerateForeignKeyDrop(fk);
}
}
// Check deleted indexes (by name only)
foreach (var index in targetIXs)
{
var sourceIX = sourceIXs.Where(s => s.IndexName == index.IndexName);
if (sourceIX.Count() == 0)
{
generator.GenerateIndexOnlyDrop(index.TableName, index.IndexName);
}
}
// Dropped columns
foreach (var column in targetColumns.Except(sourceColumns, new ColumnComparer()))
{
generator.GenerateColumnDropScript(column);
}
}
}