Я использую EF v1. У меня есть следующие таблицы:
CREATE TABLE category (
category_id int ,
category_name varchar(100) not null,
CONSTRAINT PRIMARY KEY (category_id)
)
CREATE TABLE categoryDetails (
detail_id int,
category_desc varchar(100) not null,
category_id int NOT NULL,
CONSTRAINT PRIMARY KEY (detail_id),
CONSTRAINT FOREIGN KEY (category_id) REFERENCES category(category_id)
)
В категории можно указать 0..1 categoryDetails.
В модели EF, сгенерированной из вышеуказанной базы данных, EF моделирует отношения как * как в SSDL, так и в CSDL.
Используя конструктор CSDL, я могу изменить отношение / ассоциацию на 0..1 с *. Но при проверке SSDL он остается как *.
При изменении на 0..1 в SSDL я получаю ошибку:
"Multiplicity is not valid in Role R111 in relationship RL111. Because the Dependent Role properties are not the key properties, the upper bound of the multiplicity of the Dependent Role must be *."
Подскажите пожалуйста, как поменять SSDL?
В этом случае (0..1 в CSDL и * в SSDL) для кода создаются частичные классы в соответствии с отношением 0..1 (т. Е. Одно ссылочное свойство в каждом классе, содержащее тип другого класса - сбор не участвует).
При запуске кода он работает без ошибок. Правильно ли это (разная множественность в SSDL и CSDL)?
Для случаев, когда структура таблицы НЕ может быть изменена, каково решение для получения связи 0..1?
Спасибо.