多表NHibernate查询

发布于 2024-11-18 17:21:57 字数 450 浏览 6 评论 0原文

我有一个如下所示的对象图:

class A ()
{
   int id;
   IEnumerable<B> bees;
}

class B()
{
   int id;
   A a;
   C c;
}

class C()
{
   int id;
   D d;
   IEnumerable<B> bees;
}

class D()
{
   int id;
   IEnumerable<C> cees
}

构建查询的明智方法是什么:

返回 A 类型的列表,其中它们包含具有特定 id 的 D 链?

I' m 使用 NH3,因此可以使用任何查询技术。我尝试了几种不同的方法,但每种方法都似乎陷入了死胡同。我有一个在内存集合中使用的解决方案 - 但显然这并不理想,我希望在数据库服务器上完成工作。

I have an object graph that looks like this:

class A ()
{
   int id;
   IEnumerable<B> bees;
}

class B()
{
   int id;
   A a;
   C c;
}

class C()
{
   int id;
   D d;
   IEnumerable<B> bees;
}

class D()
{
   int id;
   IEnumerable<C> cees
}

What would be a sensible approach for constructing a query which:

returns a list of A types, where they contain D down the chain with a particular id?

I'm using NH3, so can use any of the query techs. I've tried a couple of different approaches, but have hit seemingly dead ends in each case. I have a solution working with in memory collections - but obviously this is not ideal, I want the work done on the DB server.

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

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

发布评论

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

评论(1

夢归不見 2024-11-25 17:21:57
select distinct a from A a
inner join a.bees b
inner join b.c c
where c.d.id = :theSearchDId

即假设所有关联都是双向关联,而不是不相关的关联(即A.bees 是Ba 的逆关联等)。

select distinct a from A a
inner join a.bees b
inner join b.c c
where c.d.id = :theSearchDId

That is assuming that all the associations are bidirectional associations, and not unrelated associations (i.e. A.bees is the inverse association of B.a, etc.).

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