мое приложение имеет следующую сущность:
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 для пользователя просто берет первую запись из коллекции членства (которая упорядочена так, чтобы новые записи были вверху).
Пока все хорошо, но теперь скажу, что я хочу сделать следующее (я знаю, что это вернет их все, но я просто использую это в качестве примера):
var users = session.Linq<User>()
.Where(u => u.LatestMembership.DateAdded < DateTime.UtcNow);
Выдается ошибка, поскольку свойство LatestMembership выходит за рамки возможностей поставщиков nhibernate linq. Единственное решение, которое у меня есть до сих пор, - это преобразовать его в список, а затем применить условие where, но я предполагаю, что это может стать довольно недостаточным для большой базы данных.
Мне было интересно, есть ли альтернативный способ сопоставить это или каковы ваши рекомендации. Спасибо