Entity Framework 4 - Проектирование БД для обеспечения множественности от 1 до 1 - PullRequest
0 голосов
/ 22 февраля 2011

Я столкнулся со сценарием в моем приложении, где я хотел бы иметь кратность 1: 1 между сущностями, но я не знаю, как изменить свою базу данных, чтобы обеспечить это.

Допустим, у меня есть таблица документаи таблица индексов, где документ всегда будет иметь один индекс, а индекс будет когда-либо содержаться только в одном документе.В таблице Document у меня было поле IndexID, поэтому сущность Document имеет свойство навигации к своему индексу, но сущность Index имеет свойство навигации по коллекции, называемое Documents, которое не является тем, что мне нужно, поскольку всегда будет только один связанный Document.

Было бы неплохо как-то отредактировать мою схему БД, чтобы при создании модели из БД сущность «Документ» имела единую навигацию к «Индексу», а «Индекс» имел единственное свойство навигации обратно в «Документ».Возможна ли такая вещь?

Я подумал, что, возможно, мог бы отредактировать модель объекта или ее ассоциации в области дизайна модели, чтобы это произошло.Но я обеспокоен тем, что на каком-то этапе, если я перезагружу модель, она сбросит эту и другие подобные ей.

Есть ли элегантное решение, позволяющее EF автоматически понимать, что существует кратность 1: 1?

Спасибо за любой совет!

1 Ответ

1 голос
/ 22 февраля 2011

Ваша база данных не моделирует отношения 1: 1 между Document и Index, поэтому EF также не моделирует ее. Для использования 1: 1 ваш документ и индекс должны совместно использовать первичный ключ. Это означает, что вы определите Document с некоторым PK (возможно, автоматически сгенерированным), и вы определите Index с PK того же типа, а также вы определите FK, где будут участвовать PK с обеих сторон. Это обеспечит соотношение 1: 0..1 между документом и индексом. 0..1 потому что вам всегда нужно сначала вставить Document, а после этого вам нужно вставить Index (документ будет жить без Index в течение доли секунды). На вашей логике приложения лежит ответственность за обеспечение того, чтобы Документ всегда вставлялся вместе с Индексом.

...