#nhibernate
#nhibernate
Вопрос:
У меня есть простые классы:
public class Order
{
public int Id {get;set;}
public IList<Name> Names{get;set;}
}
public class Name
{
public int Id {get;set;}
public int LangId {get;set;}
public string LocalName {get;set;}
}
Вопрос в том, как запросить вложенную коллекцию Order
, чтобы получить все, что имеет некоторый порядок.Имена.localName (что-то вроде этого):
IList<Order> orders = repository.GetByProductLocalName("laptop");
Я хотел бы использовать новую функцию NH3 QueryOver, не используя Linq (я нашел несколько решений в SO, но все они используют Linq).
Ответ №1:
Все, что вам нужно сделать, это объявить переменную alias для коллекции Names, а затем вы можете использовать это в предложении where…
String localName = "laptop";
Name namesAlias = null;
return session.QueryOver<Order>()
.JoinAlias(x => x.Names, () => namesAlias)
.Where(() => namesAlias.LocalName == localName)
.TransformUsing(Transformers.DistinctRootEntity)
.List<Order>();