【发布时间】:2016-06-24 21:10:00
【问题描述】:
我需要一些关于子查询的帮助。 我的问题看起来很简单,但我想不通。
我有 3 个实体: - 公司 - 汽车 - 员工
员工有一个公司列表(但公司没有员工列表)。 汽车有一家公司。
我需要从某个员工可以访问的每家公司取回所有汽车。
数据库结构以防万一。
公司
id | Name
员工
id | Name
公司对员工
employee_id | company_id
汽车
id | Name | company_id
按照 gmiley 的建议,我正在添加一些 mora 信息。
到目前为止我做了什么:不多。
ICriteria consult = Session.CreateCriteria<Car>();
DetachedCriteria c = DetachedCriteria.For<Employee>()
.SetProjection(Projections.Property("Companies"))
.Add(Restrictions.Eq("Id", employee.Id));
consult.Add(Subqueries.PropertyIn("Company.Id", c));
但它返回的是公司内具有相同 ID 'employee' 的所有汽车。我明白为什么。但我无法根据自己的需要更改它。
需要澄清的愚蠢数据:
有 2 名员工:“比尔·盖茨”和“史蒂夫·乔布斯”。
比尔盖茨为谷歌和微软工作。
史蒂夫乔布斯为谷歌和苹果工作。
Google 有 2 辆车:“Car 1”和“Car 2”。
微软有 1 辆车:“Car 3”
Apple 有 3 辆汽车:“Car 4”、“Car 5”和“Car 6”。
我需要什么: 比尔盖茨工作的所有公司的所有汽车。
在这种情况下,汽车:“汽车 1”、“汽车 2”和“汽车 3”。
提前谢谢你!
【问题讨论】:
-
如果可以,请提供一些示例数据、您想要的结果示例,最重要的是,提供您迄今为止尝试过的一些代码,以便我们知道您已经完成了多长时间它(当人们看到你付出了一些努力时,它在获得帮助方面也有很长的路要走,并不是说你没有,只是表明你有很好)。即使您知道代码完全错误,它也有助于我们了解您的想法。
-
这是作业吗?数据库设计有点奇怪。然而,在此之上总是有可能有一个更好的类设计。无需为此查询进行任何更改,但它会使生活变得更加轻松。
-
这是一个真实案例场景,以非常简单的方式暴露出来。聚焦问题。
标签: c# nhibernate subquery nhibernate-criteria