У меня есть программа, использующая базу данных Entity Framework (EF) Сначала на уровне доступа к данным. Я знаю, что для того, чтобы EF автогенерации навигационных свойств многих ко многим отношений, таблица отображения должна содержать только составной первичный ключ:Entity Framework много-много отношений с дополнительным полем (база данных сначала)
Project
- ProjectId (PK)
- Name
ContentType
- ContentTypeId (PK)
- Name
ProjectContentTypeMapping
- ProjectId (PK)
- ContentTypeId (PK)
В этом случае все работает отлично, и я могу доступ к проектам из ContentTypes и наоборот с помощью свойств навигации.
Однако у меня есть требование иметь дополнительные поля, которые являются особыми для отношений между проектами и ContentTypes, и это будет дополнительные столбцы в таблице ProjectContentTypeMapping. Как только я их добавлю, я теряю свойства навигации, а EF отображает таблицу сопоставлений в дизайнере.
Можно ли вручную настроить сопоставление между этими двумя таблицами в EF (Database First)? В качестве альтернативы, как я могу это представить? Я думал, может быть, имея дополнительную «метаданные» таблица с FK в таблицу отображения, но он выглядит «Hacky» мне ...
Благодаря
Можете ли вы предоставить дополнительную информацию о том, как манипулировать отображениями вручную? – chuwik
см. Мой anser @chuwik –
Невозможно ли иметь дополнительные столбцы, но сказать, что Entity Framework обрабатывает таблицу так, как будто это не так? Чтобы как-то импортировать только две колонки вместо всей таблицы из базы данных? Мне нужны дополнительные столбцы в БД по другим причинам (политика на рабочем месте, другие приложения, которые используют одну и ту же базу данных), но мое приложение даже не должно знать о них. –