В Visual Studio 2017, с нуля запустил проект базы данных Oracle (версия 2) и добавил две новые таблицы «Родитель» и «Дочерний»:
Проект базы данных
Parent.sql содержит:
CREATE TABLE BDT.Parent
(
ID INT NOT NULL,
Description VARCHAR2(255) NOT NULL
);
Child.sql содержит:
CREATE TABLE BDT.Child
(
ID INT NOT NULL,
ParentID INT NOT NULL,
Description VARCHAR2(255) NOT NULL,
CONSTRAINT "FK_CHILD_PARENT" FOREIGN KEY (ParentID)
REFERENCES "BDT".Parent ("ID")
);
"BDT.Child" имеет ссылку на внешний ключ на "BDT.Parent", поэтому "BDT.Parent "должен быть создан первым. Но когда я собираю проект (щелкнув правой кнопкой мыши по узлу проекта и выбрав" build "), сценарий, сгенерированный в папке bin, выглядит следующим образом:
--
-- CHILD
--
CREATE TABLE BDT.Child
(
ID INT NOT NULL,
ParentID INT NOT NULL,
Description VARCHAR2(255) NOT NULL,
CONSTRAINT "FK_CHILD_PARENT" FOREIGN KEY (ParentID)
REFERENCES "BDT".Parent ("ID")
);
--
-- PARENT
--
CREATE TABLE BDT.Parent
(
ID INT NOT NULL,
Description VARCHAR2(255) NOT NULL
);
--
-- FK_CHILD_PARENT
--
ALTER TABLE "BDT"."CHILD" ADD CONSTRAINT "FK_CHILD_PARENT" FOREIGN KEY ("PARENTID") REFERENCES "BDT"."PARENT"("ID") ENABLE;
Здесь я вижу две основные проблемы:
- Упорядочение операторов "CREATE TABLE", похоже, основано на алфавите. Если я изменю имя дочерней таблицы на "ZChild", то оно будет помещено в конецскрипта.
- Кажется, что дублирование ограничения внешнего ключа включено в оператор CREATE, а в конце скрипта - в оператор ALTER.
Я могу 'не может найти ни ссылки на эту конкретную проблему, ни каких-либо жалоб.что-то не так с этой настройкой?
Я использую:
- Visual Studio 2017 (15.8.7)
- Инструменты разработчика Oracle для Visual Studio, поставляемые с ODAC для Visual Studio 2017 (12.2.0.1.1)
Заранее спасибо.