Можем ли мы с EF Code-First исключить свойства внешнего ключа в наших моделях?

Когда я впервые начал изучать EF Code-First, я просто предполагал, что мы будем включать в наши модели все свойства, которые мы хотим иметь в результирующих таблицах, включая внешние ключи типа int или string. Мы бы также включили свойства навигации для отложенной загрузки.

Одна из моих догадок в отношении EF заключается в том, что мы (предположительно) можем создавать модели исключительно как чистые объекты ООП, не заботясь об отношениях с базой данных. Это означает, что мы можем удалить эти свойства внешнего ключа и вместо этого иметь/сохранить виртуальные свойства навигации, которые будут отражать фактические отношения, которые мы намереваемся, - и это будет зависеть от структуры, чтобы автоматически создать правильные ограничения внешнего ключа.

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

Кто-нибудь действительно пытался не включать внешний ключ в модель?


person Mickael Caruso    schedule 02.02.2014    source источник
comment
Вы, по-видимому, мало что знаете об EF, так как это довольно четко изложено в большинстве книг по этому вопросу. То, о чем вы говорите, называется независимыми ассоциациями и не рекомендуется, потому что с ним сложнее работать и оно не такое гибкое.   -  person Erik Funkenbusch    schedule 03.02.2014
comment
Я только читал учебники и следовал им. Ни в одном из них не рассматривался вопрос о том, независимые ассоциации или независимые. Они просто сказали, что включают свойство fk И свойство навигации.   -  person Mickael Caruso    schedule 03.02.2014