вот схема таблицыFluent NHibernate: ошибка 'есть ссылка в поле "" но он не определен'
UserLogin 1 --- * UserMessages 1 --- * UserMessagesReceiver
отображения
public class UserLoginMap : ClassMap<UserLogin>
{
public UserLoginMap()
{
Table("UserLogin");
Id(x => x.Id).GeneratedBy.Assigned();
HasMany(x => x.UserMessages).KeyColumn("UserLogin_id").LazyLoad().Cascade.DeleteOrphan().Inverse();
HasMany(x => x.UserMessagesReceivers).KeyColumn("UserLogin_id").LazyLoad().Cascade.DeleteOrphan().Inverse();
}
}
public class UserMessageMap : ClassMap<UserMessage>
{
public UserMessageMap()
{
Table("UserMessages");
Id(x => x.Id).Column("Id");
References(e => e.UserLogin, "UserLogin_id").Not.LazyLoad();
HasMany(x => x.UserMessagesReceivers).KeyColumn("UserMessages_id").LazyLoad().Cascade.DeleteOrphan().Inverse();
}
}
public class UserMessagesReceiverMap : ClassMap<UserMessagesReceiver>
{
public UserMessagesReceiverMap()
{
Table("UserMessagesReceiver");
Id(x => x.Id).GeneratedBy.Assigned();
References(e => e.UserLogin, "UserLogin_id").Not.LazyLoad();
References(e => e.UserMessage, "UserMessages_id").Not.LazyLoad();
}
}
, то я хочу, чтобы выполнить этот код:
var result = session.QueryOver<UserMessage>()
.Where(x => x.UserLogin.Id == 1 //he's the message sender
||
x.UserMessagesReceivers.Count(y => y.UserLogin.Id == 1) > 0) //he's the one of the message receivers
.List();
и я получаю сообщение об ошибке:
к переменной «х» «myProject.UserMessage» типа есть ссылка в поле «» но он не определен
что не так ?
это работает, но что, если мне нужно, чтобы получить различные объекты? Запрос <> будет загружать все элементы, соответствующие критериям, а затем выполнять операцию distint. Лучшим подходом было бы, если бы отдельный был помещен внутри сгенерированного SQL-запроса – Tony