gpt4 book ai didi

c# - ORMLite/服务栈 : Joining Multiple Nested Tables Together

转载 作者:行者123 更新时间:2023-11-29 12:41:31 25 4
gpt4 key购买 nike

我认为这应该很容易,我不确定我是否只是遗漏了一些东西,或者目前 ServiceStack/ORMLite 是否缺少此功能。我有一个看起来像这样的表结构:

[Table Foo]
Id: GUID
... Fields

[Table Bar]
Id: GUID
FooId: GUID (references Foo.Id)
... Fields

[Table Baz]
Id: GUID
BarId: GUID (References Bar.Id)
... Fields

我想要做的是返回一个单一的对象,将所有 Foo、Bar 和 Baz 封装在一个单一的返回中,这样我就可以高效地处理我的数据库请求。像这样的东西:

SELECT *
FROM foo, bar, baz
WHERE foo.Id = bar.FooId && bar.Id = baz.BarId

我知道我想如何用 SQL 编写它,但我正在为如何在 ORMLite/Servicestack 中编写它而苦苦挣扎。 This Mythz 的回答似乎表明这在 ServiceStack 中还不是一个问题,但这个答案实际上也是几年前的,所以我想知道在此期间是否有任何变化。我可以遍历对象并手动加载第二个连接,因为我实际上只需要最后一个嵌套表中的一个字段,但是当我真的应该能够做到这一切时,仍然感觉对数据库进行了太多调用在一个电话中,但我找不到任何关于如何操作的文档。

最佳答案

您可以使用 OrmLite's SelectMulti API为此,例如:

var q = db.From<Foo>()
.Join<Foo, Bar>()
.Join<Bar, Baz>();

var results = db.SelectMulti<Foo, Bar, Baz>(q);

foreach (var tuple in results)
{
Foo foo = tuple.Item1;
Bar bar = tuple.Item2;
Baz baz = tuple.Item3;
}

关于c# - ORMLite/服务栈 : Joining Multiple Nested Tables Together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48312595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com