我首先在 EF6 代码中有一个相当复杂的数据库模型(大约 100 个实体)。其中一个实体称为“Base”,另一个称为“BaseAssociation”。“BaseAssociation”在“Base”对象之间建立多对多关系。附加到“BaseAssociation”对象的是“BaseAssociationAttribute”对象,它们为关联提供元数据。
“BaseAssociation”包含对“Base”表的两个引用,“AssociatedBy”和“AssociatedWith”。在使用 Devart dotConnect (8.4.215) 在 Oracle 数据库上创建数据库模型时,两个引用的外键约束具有相同的名称。通常,命名由实体类型和属性名称组成。但不知何故,这在我的情况下似乎被打破了。dotConnect 生成以下 sql:
ALTER TABLE "BaseAssociations"
ADD CONSTRAINT "FK_Base_BaseAssociation" FOREIGN KEY ("AssociatedByRef") REFERENCES "Base" ("Id")
ALTER TABLE "BaseAssociations"
ADD CONSTRAINT "FK_Base_BaseAssociation" FOREIGN KEY ("AssociatedWithRef") REFERENCES "Base" ("Id")
不知何故,两个外键都被赋予了相同的约束名称。
虽然在 sql server 设置上执行,但一切正常。不知何故,我无法使用更简单的模型重现这一点,并且所有其他约束名称都遵循默认模式。我没有触及任何代码优先约定,但启用了“截断长默认名称”、“忽略模式名称”和“列类型大小写约定兼容性”。
我正在使用 EF6.1.1,点连接 8.4.215
有人有想法吗?谢谢