EF 4 не поддерживает ассоциации, которые не основаны на внешних / первичных ключах. Есть много случаев, когда вам нужно перемещаться между таблицами, используя неключевые поля.
Например, таблица лекарств имеет:
medID (PK)
medGrouperID
medName
таблица ингредиентов имеет:
ingredientID (PK)
ingredientName
и таблица ссылок имеет:
medGrouperIDID (PK)
ingredientID (PK)
В этом случае EF не позволяет мне создавать связь между лекарствами и таблицей ссылок, поскольку ни один из них не имеет внешнего ключа для другого.
Я давно не занимался разработкой БД, поэтому я пытаюсь понять это ограничение; Это следующий хороший дизайн базы данных или сбой EF?
РЕДАКТИРОВАТЬ
MedGrouperID позволяет группировать все лекарства с одинаковыми ингредиентами, применениями, инструкциями и т. Д. Это устраняет дублирование данных, которое существовало бы, если бы у каждого лекарства был свой собственный набор записей для ингредиентов, видов использования и т. Д.
Добавление новой таблицы MedGrouper будет работать, но для этого потребуется дополнительное объединение, которое не может сказаться на производительности.
Медикаменты
* MedID (PK)
* MedGrouperID (FK)
* MedName
MedGrouper
* MedID (FK)
* MedGrouperID (PK)
Ингредиент
* IngredientID (PK)
* IngrediantName
MedicationIngredients (таблица соединения / соединения)
* MedGrouperID (PK, FK)
* IngredientID (PK, FK)
/ EDIT