在运行数据透视文件时,我们的模型遇到了问题。看来我们在 PK 和 FK 上遇到了命名冲突(就像在这个中一样)。
我们的用例是我们创建了新表(比如 tableAB),但是由于命名冲突,没有创建 PK(比如 PK_tableA),因为另一个表(比如 tableAB)已经定义了这个 PK(PK_tableA)。由于 FK 引用了 tableAB 上不存在的 PK,因此数据透视表将停止处理。
有没有办法重命名 PK 和 FK 约束?特别是我们已经使用了一个覆盖 SoftFluent.Samples.CustomNamingConvention.FormatNamingConvention 的自定义类,但这似乎只适用于 DF_ 约束(参见此处)。我想通过 PK 和 FK 约束来实现相同的目标,最好的解决方案是什么?
编辑 08/07/2016
终于找到了对象转换的方法。下面的代码生成具有预期命名的约束:
public override string GetShortName(IShortNamedObject obj, IDictionary context)
{
Object objCopy = obj;
if (objCopy is Constraint)
{
Constraint constraint = objCopy as Constraint;
if (constraint != null && constraint.Table != null)
{
if (constraint.ConstraintType == ConstraintType.PrimaryKey || constraint.ConstraintType == ConstraintType.ForeignKey)
{
var result = constraint.Table.Name + base.GetShortName(obj, context);
return result;
}
}
}
return base.GetShortName(obj, context);
}
感谢提供的支持。