В баскетбольном матче НБА я хочу хранить данные о каждой игре Одна игра имеет свои StartTime
, две Team
с и список игр. Каждый Play имеет свое появление во времени и (в зависимости от игры) различные свойства. Существует 8 различных типов игры, например: «Отскок», «FieldGoalAttempt»:
Отскок:
- команда
- игрок
- reboundType
Попытка достижения цели:
команда
ShoppingPlayer
AssistingPlayer
blockingPlayer
shotType
distanceFeet
очков
местоположение
результат
Как видите, эти две игры совершенно разные - и есть еще 6 типов. Что подводит меня к моей первой проблеме.
Вопрос 1: Как мне реализовать это в C#?
Моя идея состоит в том, чтобы создать тип Play
, а затем 8 классов, представляющих типы воспроизведения, например Rebound
, FieldGoalAttempt
, JumpBall
, например:
public class Play
{
public int PlayId { get; set; }
public int GameId { get; set; }
public int PlayerId { get; set; }
public Rebound Rebound { get; set; }
public FieldGoalAttempt FieldGoalAttempt { get; set; }
public Turnover Turnover { get; set; }
public Foul Foul { get; set; }
...
public JumpBall JumpBall { get; set; }
public Game Game { get; set; }
public Player Player { get; set; }
}
Но Я не был уверен, что это «кодовый запах». У меня было еще несколько идей: список object
с? или пользовательский класс C#, который действует как "Союз"? Итак, первый вопрос: как мне справиться с этой ситуацией в C#? Моя первая идея хороша?
Вопрос 2: В конце концов, я хочу сохранить эти пьесы в базе данных. В моей архитектуре я использую модели, которые представляют таблицы в базе данных. Для моей логики c я создаю Service
, поэтому модели являются "anemi c", которые некоторые люди называют "анти-паттернами", но я не хочу об этом говорить. У меня есть Службы для моей логики c, и она работает для меня.
Если я решу создать Union
подобный класс - Как мне сохранить эти пьесы в базе данных?