Могу ли я использовать наследование для этой ситуации, и если да, то какая стратегия лучше? (TPH против TPT против TPC) - PullRequest
0 голосов
/ 04 сентября 2018

Я относительно новичок в Entity Framework, и по большей части все идет хорошо, но сейчас я нахожусь в точке, где я пытаюсь выяснить, нужно ли мне использовать наследование здесь, и если да, какую стратегию использовать. После пары часов исследований я чувствую, что наследование - это не то, что мне нужно, но я действительно не уверен, так как я все еще учусь. Различные структуры баз данных для каждого типа могут быть немного запутанными для меня здесь. Надеюсь, вы, ребята, сможете мне помочь.

Вот мой пример:

У меня есть класс, который я называю BasePokemon. Это в основном таблица с каждым видом покемонов (скажем, оригинал 150), и содержит всю их общую информацию. Вот упрощенная версия ниже:

public int BasePokemonId { get; set; }
public string Name { get; set; }
public int PokedexNumber { get; set; }
public int BaseHP { get; set; }
public int BaseATK{ get; set; }
public int BaseDEF{ get; set; }
public int BaseSPD{ get; set; }
public int BaseSPD{ get; set; }
public string MainImageURL { get; set; }

...etc...

Далее у меня есть класс GamePokemon, который является фактическим экземпляром BasePokemon. Многие их данные будут получены из таблицы BasePokemon при создании, но есть также много других полей, специфичных для данного экземпляра покемона. Пример:

public int GamePokemonId {get; set; }
public int SpeciesId {get; set}
public BasePokemon Species {get; set}
public int Level {get; set; }
public string Gender { get; set; } //M or F
public int MaxHP { get; set; }
public int CurrHP { get; set; }
public int ExperiencePts { get; set; }
public int StatHP { get; set; }
public int StatATK { get; set; }
public int StatSATK { get; set; }
public int StatDEF { get; set; }
public int StatSDEF { get; set; }
public int StatSPD { get; set; }
...etc...

Так что, хотя он получает свои Name, Base Stats, Image и другие общие поля от BasePokemon, у него также есть тонны других полей, которые относятся к этому конкретному покемону, такие как его текущее HP, его Level, Stats и т. Д.

Так вот мой вопрос: я должен здесь использовать наследование? Потому что чем больше исследований я проводил, тем больше осознавал, что не думаю, что смогу?

В настоящее время я думаю о создании полей BasePokemon в таблице GamePokemon, и когда GamePokemon создается, он извлекает всю базовую информацию из таблицы BasePokemon (используя выбранные виды покемонов). Причина, по которой я не решаюсь, заключается в том, что я буду создавать большое количество полей в таблицах BasePokemon и GamePokemon. Это проблема?

Заранее спасибо.

...