мое приложение имеет следующую сущность:
public class User
{
public virtual int UserID { get; set; }
public virtual Membership LatestMembership { get { return Membership.First(); } }
public virtual IList<Membership> Membership { get; set; }
public User()
{
Membership = new List<Membership>();
}
}
Со следующим отображением:
public UserMap()
{
Table("Users");
Id(x => x.UserID);
HasMany(x => x.Membership)
.KeyColumn("UserID")
.OrderBy("DateAdded DESC")
.Inverse()
.Cascade.All();
}
Свойство LatestMembership для пользователя просто получает первую запись из коллекции Membership (котораяупорядочено так, чтобы новые записи находились вверху).
Пока все хорошо, но теперь скажите, что я хочу сделать следующее (я знаю, что это вернет их все, но я просто использую это какпример):
var users = session.Linq<User>()
.Where(u => u.LatestMembership.DateAdded < DateTime.UtcNow);
Произошла ошибка, поскольку свойство LatestMembership выходит за рамки возможностей поставщиков nhibernate linq.Единственное решение, которое у меня есть, - это преобразовать его в список, а затем применить условие where, но я думаю, что для большой базы данных это может оказаться довольно недостаточным.
Мне было интересно, существует ли альтернативный способЯ мог бы сопоставить это или какие ваши рекомендации.Спасибо