Как вы справляетесь со ссылочными таблицами при использовании Domain Driven Design и nHibernate?

Если у вас есть таблицы "Группы", "Пользователи", "Каналы" и между двумя таблицами ссылок, как вы организуете их в Domain Driven Design и nHibernate? Есть ли у группы UserCollection и ChannelCollection, пользователь - GroupCollection и ChannelCollection и канал - GroupCollection и UserCollection?

И если вы хотите добавить группу в канал, нужно ли сохранить канал со всеми его группами? Хуже того, добавление пользователя в канал... сохранение всех пользователей канала требует сначала загрузить их всех, затем добавить нового пользователя и затем сохранить канал (хорошо, возможно, будет сохранен только добавленный пользователь, но вы нужно загрузить их всех...). Или вы создадите метод в репозитории AddUserToChannel(пользователь, канал канала) или AddUserToChannel(пользователь, int channelId)?

1 ответ

Решение

И да и нет. Да, в вашей группе есть коллекция каналов и т. Д. Однако в игру вступает ленивая загрузка. Насколько я понимаю, большинство проблем, связанных с загрузкой большого количества записей, недействительны. то есть говоря что-то вроде:

myGroup.Channels.Add(myChannel);
myChannel.Groups.Add(myGroup);

Не заставляет группы myChannel загружаться.

Другие вопросы по тегам