Я начинаю новый проект и хочу начать с моделирования данных, которые клиент должен хранить. Тем не менее, я понятия не имею, с чего начать. Пока что я пытаюсь смоделировать две простые сущности, Event
и Address
. Event
может иметь несколько Addresses
, а Address
может быть связано с несколькими Events
. Вот что у меня есть:
public class Event
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<Address> Addresses { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Street { get; set; }
public string Zip { get; set; }
public List<Event> Events { get; set; }
}
Однако я столкнулся с проблемой, когда попытался создать тестовые репозитории для этих двух объектов. Они имеют циклическую зависимость: Event
не может заполнить свой список Addresses
, пока Address
не заполнится полностью, но Address
не может заполнить свой список Events
, пока Events
не будет заполнен полностью. Это заставило меня поверить, что я не знаю, что делаю.
Я много читал о POCO, DTO, DAO и DDD, но эти концепции не имеют для меня большого смысла, независимо от того, как сильно я пытаюсь их понять. Я только недавно закончил колледж и даже не слышал о термине «модель предметной области» до недели назад.
Концептуально, я хотел бы сначала создать классы, представляющие типы данных, которые мне нужно хранить (Entities
, я полагаю). Эти классы также будут содержать логику проверки (это POCO?). После этого я хочу настроить репозитории для доступа к коллекциям этих объектов и заполнить любые отношения, которые они могут иметь (например, Event
будет заполнен списком Addresses
) [это постоянное невежество?]. Только после всего этого я хочу создать базу данных для хранения данных (через DAO? Является ли ORM DAO? Как бы я использовал LINQ-To-SQL для этого?). И где IoC вписывается во все это или не подходит вообще, если я знаю, что мой бэкэнд никогда не изменится, и я всегда буду использовать только одну базу данных?
Если это еще не было очевидно, я довольно озадачен тем, с чего начать. У меня есть хорошее концептуальное представление о том, что я хочу сделать, я просто не знаю, как это реализовать. Может ли кто-нибудь дать мне совет относительно хорошей отправной точки? Спасибо.