У меня есть 4 таблицы базы данных (Channel, User, Message, User2Channel) и соответствующие классы сущностей:
class **Channel** {
int ChannelId {get;set;}
int ISet<User> UsersToChannel {get;set;}
...
}
class **Message** {
int MessageId {get;set;}
Channel Channel {get;set;}
User User {get;set;}
...
}
class **User**{
int UserId {get;set;}
ISet<Channel> Channels {get;set;}
...
}
Я использую fluentnhibernate для отображения:
class **ChannelMap** {
ChannelMap(){
...
HasManyToMany(x => x.UsersInChannel)
.AsSet()
.Cascade.All().Inverse()
.Table("User2Channel")
.Not.LazyLoad();
}
}
class **UserMap** {
UserMap(){
HasManyToMany(x => x.Channels)
.AsSet()
.Cascade.All()
.Table("User2Channel")
.Not.LazyLoad();
}
}
Я загружаю сообщения в этом коде:
...
var query = session.CreateQuery(@"select m from Message m");
var msgs = query.List<Message>();
...
В профилировщике я вижу много таких запросов:
SELECT ... FROM User2Channel WHERE ChannelId=654
SELECT ... FROM User2Channel WHERE ChannelId=655
etc
Пожалуйста! Помоги мне! Как я могу решить эту проблему? Если у меня много тысяч каналов - я получаю также много запросов в базу данных!