如何编写查询子项的 NHibenerate 查询?

发布于 2024-10-02 01:43:48 字数 185 浏览 1 评论 0原文

我需要编写一个 NHibernate 查询,该查询将限制访问一对多关系中的子项。

例如,我有一个客户对象,其属性是地址列表。我需要找到在给定城市有地址的所有客户。

另外,我编写此查询的方式还包括对客户本身添加其他限制,例如状态、名称等。因此,我不能纯粹从地址角度编写查询。

关于如何实现这一目标有什么想法吗?

I need to write an NHibernate query that will place a restriction that accesses the children in a one to many relationship.

For example, I have a customer object that has property that is a list of addresses. I need to find all customers who have an address in a given city.

Also, I am writing this query in such a way that I will also be adding other restrictions to the customer itself, such as status, name, etc. So, I can't write the query purely from the address perspective.

Any ideas on how to accomplish this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

驱逐舰岛风号 2024-10-09 01:43:49

您可以使用 Criteria api,在 Customer 对象的 Adresses 属性上使用“嵌套”条件:

var result = session
    .CreateCriteria(typeof(Customer))
        .CreateCriteria("Adresses")
        .Add( Restriction.Eq("City", "NY") )
    .ToList<Customer>();

如果您需要查询名称,可以像这样:

var customerCriteria = session
    .CreateCriteria(typeof(Customer));

customerCriteria.Add( Restrictions.Like("Name", "John", MatchMode.Exact) );

customerCriteria.CreateCriteria("Adresses")
    .Add( Restriction.Eq("City", "NY") );

var result = customerCriteria.ToList<Customer>();

You can use the Criteria api, with a "nested" criteria on the Adresses property of your Customer object :

var result = session
    .CreateCriteria(typeof(Customer))
        .CreateCriteria("Adresses")
        .Add( Restriction.Eq("City", "NY") )
    .ToList<Customer>();

If you need to query on name, you can go like this :

var customerCriteria = session
    .CreateCriteria(typeof(Customer));

customerCriteria.Add( Restrictions.Like("Name", "John", MatchMode.Exact) );

customerCriteria.CreateCriteria("Adresses")
    .Add( Restriction.Eq("City", "NY") );

var result = customerCriteria.ToList<Customer>();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文