如何解决从现有架构创建架构?
我有两个数据库:
-
缺少索引、约束、外键等的数据库 A ...
-
具有所有缺失特征的数据库 B
我已经在我的 C# 代码中加载了两个数据库的架构,在比较它们之后,我将缺少的功能添加到第一个架构中。 现在我想将该架构更新回 SQL Server。怎么做?我可以从现有架构创建架构吗?
这是我尝试过的:
public static void Compare(ref DbMetaData dbSchema,ref DbMetaData dbSchema2)
{
foreach (var schemaGroup in dbSchema.SchemasDic.Values )
{
DbUserSchemaInfo schemaGroup2=dbSchema2.SchemasDic.Values.First(sc => sc.SchemaName == schemaGroup.SchemaName);
foreach (var x in schemaGroup.TablesDic)
{
var y = schemaGroup2.TablesDic.First(sc => sc.Value.TableName == x.Value.TableName);
// GET the difference in columns
var colDiff = x.Value.Columns.Except(y.Value.Columns);
// GET the difference in indexes
var indexDiff = x.Value.Indexes.Except(y.Value.Indexes);
// GET the difference in constraints
var constraintDiff = x.Value.DfConstraints.Except(y.Value.DfConstraints);
// GET the difference in Fk
var foreignKeysDiff = x.Value.ForeignKeys.Except(y.Value.ForeignKeys);
//check if a primary key exists
var primaryKeysDiff = y.Value.PrimaryKey == null ? x.Value.PrimaryKey : null;
// GET the difference in triggers
var triggersDiff = x.Value.Triggers.Except(y.Value.Triggers);
//merge the difference
if (indexDiff.Count() != 0)
{
foreach (var index in indexDiff)
{
y.Value.AddTableIndex(index.Value);
}
}
if (constraintDiff.Count() != 0)
{
foreach (var constraint in constraintDiff)
{
y.Value.AddDefaultConstraint(constraint.Value);
}
}
if (foreignKeysDiff.Count() != 0)
{
foreach (var foreignKey in foreignKeysDiff)
{
y.Value.AddFk(foreignKey.Value);
}
}
if (triggersDiff.Count() != 0)
{
foreach (var trigger in triggersDiff)
{
y.Value.AddTableTrigger(trigger.Value);
}
}
}
}
//Update DbSchema in sqlserver
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。