уважаемое сообщество профессиональных разработчиков!
Я пытаюсь понять, как правильно сделать сопоставление с помощью Code First.
Предположим, что есть несколько классов. Один класс-контейнер, один базовый класс и несколько классов-потомков.
Базовый класс:
public class Base {
public int Id { get; set; }
}
Классы-потомки:
public class FirstDescendant {
public string FirstProperty { get; set; }
}
public class SecondDescendant {
public int SecondProperty { get; set; }
}
public class ThirdDescendant {
public int ThirdProperty { get; set; }
}
Контейнерный класс:
public class Container {
public int Id { get; set; }
public ICollection<FirstDescendant> FirstDescendants { get; set; }
public ICollection<SecondDescendant> SecondDescendants { get; set; }
public ICollection<ThirdDescendant> ThirdDescendants { get; set; }
}
По умолчанию после создания DbContext и запуска моего кода я получаю две таблицы со следующей структурой:
Таблица Контейнер
Id
Таблица Base
Id
ФирстПроперти
Container_Id1
Второе свойство
Container_Id2
Третье свойство
Container_Id3
Таким образом, я получаю таблицу с именем Base, содержащую три идентичных поля, которые играют роль внешнего ключа.
Теперь вопросы:
Мне не нравится такая избыточность. Как оценивает эту ситуацию профессиональное сообщество, нормально ли это?
Могу ли я изменить это? Могу ли я получить более четкую структуру базы данных?
Каков наилучший способ отобразить эти классы?
Я уже публиковал похожий вопрос но меня все еще волнует этот вопрос.
Спасибо за ваши ответы и внимание.