Когда я впервые начал изучать EF Code-First, я просто предполагал, что мы будем включать в наши модели все свойства, которые мы хотим иметь в результирующих таблицах, включая внешние ключи типа int или string. Мы бы также включили свойства навигации для отложенной загрузки.
Одна из моих догадок в отношении EF заключается в том, что мы (предположительно) можем создавать модели исключительно как чистые объекты ООП, не заботясь об отношениях с базой данных. Это означает, что мы можем удалить эти свойства внешнего ключа и вместо этого иметь/сохранить виртуальные свойства навигации, которые будут отражать фактические отношения, которые мы намереваемся, - и это будет зависеть от структуры, чтобы автоматически создать правильные ограничения внешнего ключа.
Вероятно, нам нужно использовать Fluent API для более подробной информации, такой как удаление каскада и какой из двух столбцов получает (автоматически сгенерированный) внешний ключ.
Кто-нибудь действительно пытался не включать внешний ключ в модель?