Создание вручную отношения от 0..1 до 0..1 в базе данных Entity Framework First First - PullRequest
0 голосов
/ 19 июня 2019

В моей базе данных у меня есть одна таблица, которая содержит список трейлов, одна для загрузки отсеков и одна соединительная таблица. Последний содержит список того, когда какой трейлер был в каком погрузочном отсеке. Пока все хорошо.

У меня также есть представление базы данных с именем CurrentLoadingBayAssignment. Он содержит список всех погрузочных отсеков и обнуляемую ссылку на трейлер. Если в грузовом отсеке прямо сейчас есть трейлер, он будет содержать его идентификатор, иначе NULL.

Как видите, это отношение от 0,1 до 0,1. Конкретный трейлер может находиться сейчас в одном загрузочном отсеке или где-то еще. И каждый погрузочный отсек может иметь только один трейлер или бесплатно.

Поэтому я вручную добавил отношение к моей модели данных между таблицей и представлением. Я установил кратность обоих концов на 0..1, что мне кажется логичным. Это, однако, не представляется возможным. Я получаю сообщение об ошибке # 113, что множественность на конце представления должна быть установлена ​​на *, потому что столбец ID_LoadingBay не является первичным ключом. На самом деле, этого даже не может быть, потому что поле обнуляется.

Поэтому моей следующей идеей было установить уникальное ограничение для поля представления ID_LoadingBay, но вы не можете установить ограничения для представлений на конце базы данных, и я также не вижу опции на стороне дизайнера при использовании База данных Первый подход. Кажется, есть свойство / аннотация IsUnique для Code First, но я не использую этот подход.

Есть ли способ заставить Visual Studio игнорировать эту ошибку? Или есть какая-то скрытая особенность, заставляющая VS поверить, что поле зрения уникально по дизайну? Я мог бы просто обойти эту проблему, установив множественность * и получить доступ к полю с помощью SingleOrDefault()?, но я бы предпочел должным образом напоминать реальность моей базы данных. И это соотношение от 0,1 до 0,1.

У вас есть идеи, как этого добиться?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...