gpt4 book ai didi

c# - NHibernate hql 元组结果

转载 作者:行者123 更新时间:2023-12-02 15:50:56 25 4
gpt4 key购买 nike

hql = "select f, b from Foo f, Bar b"

var resultList = session.CreateQuery(hql).List<object[]>();

结果列表项是一个数组,其中 [0] 为 Foo 类型,[1] id 为 Bar 类型

有没有一种方法可以使用 Tuple (或其他泛型类)作为 object[] 的泛型参数,以便可以跳过转换?

最佳答案

是的,你可以,比如:

// The new Tuple<Foo, Bar>(foo, bar) constructor
Type constructor = typeof(Tuple<Foo, Bar>).GetConstructors()[0];

然后

.SetResultTransformer(Transformers.AliasToBeanConstructor(constructor));

.List()之前

附录

我查看了我的代码(因为我已经在一两年前完成了这个:)),并且我注意到我更喜欢

Type constructor = typeof(Tuple<Foo, Bar>).GetConstructor(new[] { typeof(Foo), typeof(Bar) });

对此有一个非常好的推理:现在(从 .NET 4.5.1 开始)Tuple<T1, T2> 有一个公共(public)构造函数。 ,即new Tuple(T1 t1, T2 t2)没有隐式或显式保证在 .NET 的 future 版本中不会有 Tuple<T1, T2> 的无参数公共(public)构造函数。这将返回一个“空”元组。越长GetConstructor form 保证总是采用“正确的”构造函数。

关于c# - NHibernate hql 元组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29006359/

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