Иностранные ключи генерируются как NOCHECK - PullRequest
0 голосов
/ 13 ноября 2018

Согласно этой странице документации ( Отношения ассоциации ), кажется, что CodeFluent Entities генерируют внешние ключи в режиме NOCHECK по умолчанию на Один ко многим и Много ко многим отношений.С другой стороны, внешние ключи в отношениях Один к одному создаются в режиме CHECK .У меня есть несколько вопросов по этому поводу:

  • Насколько я понимаю, NOCHECK внешние ключи отключены.Если да, то какова цель создания всех этих отключенных внешних ключей?
  • Есть ли способ (и интерес) изменить это поведение?
  • У нас есть Один в Один отношения в нашем приложении, но все же все внешние ключи отключены в нашей базе данных.Почему это так?

спасибо заранее.

1 Ответ

0 голосов
/ 13 ноября 2018

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

В любом случае, вы можете указать CodeFluent Entities проверять ограничение, установив defaultPersistenceEnforce="true" в проекте

<cf:project defaultPersistenceEnforce="true">

Из документации

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

Также возможно навязать определенные отношения вместо всего проекта. Это можно сделать, указав атрибут persistenceEnforce в значении true в свойстве отношения.

...