Я пытаюсь разрешить ситуацию, с которой я столкнулся при внедрении EF в моем проекте.
Я отказался от подхода «таблица за типом», в моем случае ActionUpdate наследуется от ActionHistory, и это прекрасно работает.
То, чего я пытаюсь добиться, - это извлечь ActionUpdate из ActionHistory и иметь свойство навигации в ActionUpdate, которое будет содержать коллекцию сущностей ActionUpdateDetail.
Проблема начинается с наследования: когда я удаляю ActionHistoryId из ActionUpdate согласно образцу MSDN, а затем наследую от ActionHistory и выполняю повторное сопоставление, ActionUpdateId автоматически превращается в свойство не-PK.
Это поведение не позволяет мне сопоставить сущность ActionUpdateDetail, так как мой новый производный класс больше не содержит PK :(
Я должен сопоставить ActionUpdate.ActionUpdateId с ActionUpdateDetail.ActionUpdateid
Мои предположения:
- Либо вообще невозможно достичь чего-то подобного,
- Я просто тупой пердун, пытающийся делать вещи неправильно,
- Я обречен:)
причина проблемы
Я думаю, что важно поделиться с вами причиной моей агонии:)
Я интуитивно предполагал, что ActionUpdateDetail должен сопоставляться с идентификатором ActionUpdate, который был неверным.
Вместо этого он должен сопоставляться со свойством ActionHistoryId сущности ActionUpdate, поскольку ActionUpdate является производным от ActionHistory.
Это небольшое изменение привело к тому, что таблица ActionUpdate потеряла свой столбец Id, т.е. она содержит только столбец ActionHistoryId. Причина существования этой таблицы с одним столбцом заключается в том, что ActionHistory является абстрактной сущностью, и мне нужно что-то, например, ActionUpdate для хранения набора сущностей ActionUpdateDetail.