Как вы справляетесь со ссылочными таблицами при использовании 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 загружаться.