У меня есть модель данных, которая включает в себя типы элементов Stage, Actor и Form. Логически, этапам могут быть назначены пары (Form < --- > Actor), которые могут быть дублированы много раз (то есть один и тот же человек и одна и та же форма добавляются на один и тот же этап позднее).
Сейчас я моделирую это с помощью этих таблиц:
Stage
Form
Actor
Form_Actor
_______________
|Id |
|FormId | --> Id in Form
|ActorId | --> Id in Actor
Stage_FormActor
__________________
|Id |
|StageId | --> Id in Stage
|FormActorId | --> Id in Form_Actor
Я использую CodeSmith для создания слоя данных для этой настройки, и ни один из шаблонов не знает, как правильно обращаться с этим типом отношений при создании классов. В идеале ORM будет иметь Stage.FormActors, где FormActor будет парной формой, Actor.
Это правильный способ моделирования этих отношений. Я попытался использовать все три идентификатора в одной таблице, а также
Stage_Form_Actor
______________
|Id |
|StageId | --> Id in Stage
|FormId | --> Id in Form
|ActorId | --> Id in Actor
Это тоже не очень хорошо получается. Идеи?
Я ничего не знаю о CodeSmith, но ваша схема базы данных для определения неотъемлемых отношений "многие ко многим" между этими тремя объектами правильна (лучше всего подходит StageFormActor).
Следует отметить, что вам может понадобиться определить составной первичный ключ для этой таблицы ассоциаций (вместо использования первичного ключа с искусственным идентификатором)