最初に EF6 コードにかなり複雑なデータベース モデル (約 100 エンティティ) があります。これらのエンティティの 1 つは「Base」と呼ばれ、別の「BaseAssociation」と呼ばれます。「BaseAssociation」は、「Base」オブジェクト間に多対多の関係を確立します。「BaseAssociation」オブジェクトには、関連付けのメタデータを提供する「BaseAssociationAttribute」オブジェクトが添付されています。
「BaseAssociation」には、「Base」テーブルへの 2 つの参照、「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サーバーのセットアップで実行されたのに対し、すべて正常に動作します. どういうわけか、単純なモデルではこれを再現できず、他のすべての制約名はデフォルトのスキーマに従っています。コード ファーストの規則には触れませんでしたが、「長いデフォルト名を切り捨てる」、「スキーマ名を無視する」、および「列型の大文字と小文字の規則の互換性」を有効にしました。
私はEF6.1.1、dotconnect 8.4.215を使用しています
誰でもアイデアを得ましたか?ありがとう