Подтвердить что ты не робот

Имеют ли отсутствующие внешние ключи в базе данных влияние на sql, сгенерированное EF?

Я работаю над первым приложением ASP.NET MVC с базой данных. Глядя на базу данных, внешние ключи очень несовместимы, в основном они существуют только в том случае, если они были указаны в сценариях SQL, которые создавали таблицы. В большинстве случаев их там нет.

Однако, глядя в модель edmx, я вижу, что он знает внешние ключи, то есть он правильно идентифицировал свойства навигации.

Мой вопрос заключается в том, что недостающие внешние ключи в реальной базе данных влияют на sql, созданный Entity Framework? По сути, я имею в виду негативное влияние на производительность.

Я не могу понять, имеет ли это значение или нет.

Чтобы уточнить, в базе данных я расширяю таблицы и ищу красную клавишу, которая указывает на внешний ключ. Я также ищу в подпапках: "Ключи".

4b9b3361

Ответ 1

Отрицательное влияние на производительность.

Я могу представить два эффекта присутствия внешних ключей.

  • A незначительное негативное влияние на вставки и обновления, поскольку ключи должны быть проверены. Однако, по сравнению со всем, что происходит в одной полной базе данных, этот эффект совершенно ничтожен. Абсолютно никаких оснований воздерживаться от их использования. Это никогда не перевешивает преимущества целостности данных.
  • Огромное усиление производительности при настройке внешних ключей с помощью каскадных удалений и обновлений.

Короче говоря, нет причин для преднамеренного исключения внешних ключей.

Конечно, наследие не всегда может быть отменено за одну ночь. Если есть какая-либо возможность для изменения схемы базы данных, я бы пошел на это. Если нет, вы можете вручную добавить общие ассоциации в модель edmx. Эти ассоциации не будут удалены путем обновления модели из базы данных.

Ответ 2

Да, вам нужны эти внешние ключи.
Я не знаю Entity Framework, но я знаю некоторые SQL Server.
Вы можете получить гораздо лучшие планы выполнения, если у вас есть внешние ключи.
Kendra Little имеет хорошее видео о внешних ключах здесь.

Вам также необходимо убедиться, что они активны и надежны. Брент Озар пишет об этом здесь.