QueryOver OrderBy child 属性 使用字符串
QueryOver OrderBy child property using strings
我正在努力使用 QueryOver.OrderBy 和子实体上 属性 名称的字符串。例如以下是有效的,但我正在对 OrderBy 字段进行硬编码。
Customer custAlias = null;
session.QueryOver<Campaign>()
.JoinAlias(x => x.Customer, () => custAlias)
.OrderBy(() => custAlias.Name).Desc() // want to use string property name
.List();
我可以使用类似以下内容的字符串指定 OrderBy:
.OrderBy(Projections.Property("DOB")).Desc();
但这是在 Campaign 实体而不是子 Customer 实体上寻找 "DOB"。是否可以检索 NH 使用的别名,然后将路径设置为 属性 例如
.OrderBy(Projections.Property("cust.DOB")).Desc(); // where "cust" is the alias
有什么想法吗?
使用的别名是变量名。所以
Projections.Property("custAlias.DOB")
(现在无法测试,但如果我没记错的话它是有效的)
有趣的是,用作别名的不是变量本身,而是它的名称。这是什么意思?
QueryOver<Campaign> query;
{
Customer custAlias = null;
query = session.QueryOver<Campaign>()
.JoinAlias(x => x.Customer, () => custAlias)
}
{
Customer custAlias = null;
var result = query.OrderBy(() => custAlias.Name).Desc() // want to use string property name
.List()
}
两个不同的custAlias
,但它仍然有效:-)
(如果您想在多个方法中拆分查询的各个部分,这很有用...唯一重要的是它们对别名使用相同的命名)
我正在努力使用 QueryOver.OrderBy 和子实体上 属性 名称的字符串。例如以下是有效的,但我正在对 OrderBy 字段进行硬编码。
Customer custAlias = null;
session.QueryOver<Campaign>()
.JoinAlias(x => x.Customer, () => custAlias)
.OrderBy(() => custAlias.Name).Desc() // want to use string property name
.List();
我可以使用类似以下内容的字符串指定 OrderBy:
.OrderBy(Projections.Property("DOB")).Desc();
但这是在 Campaign 实体而不是子 Customer 实体上寻找 "DOB"。是否可以检索 NH 使用的别名,然后将路径设置为 属性 例如
.OrderBy(Projections.Property("cust.DOB")).Desc(); // where "cust" is the alias
有什么想法吗?
使用的别名是变量名。所以
Projections.Property("custAlias.DOB")
(现在无法测试,但如果我没记错的话它是有效的)
有趣的是,用作别名的不是变量本身,而是它的名称。这是什么意思?
QueryOver<Campaign> query;
{
Customer custAlias = null;
query = session.QueryOver<Campaign>()
.JoinAlias(x => x.Customer, () => custAlias)
}
{
Customer custAlias = null;
var result = query.OrderBy(() => custAlias.Name).Desc() // want to use string property name
.List()
}
两个不同的custAlias
,但它仍然有效:-)
(如果您想在多个方法中拆分查询的各个部分,这很有用...唯一重要的是它们对别名使用相同的命名)