gpt4 book ai didi

nhibernate - 如何使用 NHibernate 调用从多个表返回结果的过程?

转载 作者:行者123 更新时间:2023-12-04 06:38:01 25 4
gpt4 key购买 nike

通常我们为每个表类创建 1:1 映射。

例如(表格):
[用户]
user_id - PK
姓名

[交易]
user_id - FK
item_id
数量

示例映射:
公共(public)类用户
{
公共(public)字符串 ID {get;放;}
公共(public)字符串名称 {get;放;}
}

公共(public)类事务
{
公共(public)字符串用户ID {get;放;}
公共(public)字符串 ItemID {get;放;}
公共(public)小数金额{get;放;}
}

但是由于优化的考虑,有时在查询结果时需要进行一些操作;我们通常使用从多个表返回结果的存储过程。
如果我们使用上面的例子;我们如何调用从连接表返回结果的过程?仅仅为了这个组合记录,是否可以不创建新类和绑定(bind)?

谢谢!

最佳答案

在这种情况下,可以使用存储过程,使用如下映射结构:

<sql-query name="LoadUsersAndTransactions" xml:space="preserve">
<return class="User" alias="u">
<return-property name="ID" column="user_id" />
<return-property name="Name" column="name" />
</return>
<return-join property="u.Transactions" alias="t">
<return-property name="key" column="user_id" />
<return-property name="element" column="item_id" />
<return-property name="element.id" column="item_id" />
<return-property name="element.Amount" column="amount" />
</return-join>
EXEC dbo.SelectUsersAndTransactions :param_1, ..., :param_N
</sql-query>

此示例假定 Transactions 被映射为 User 类上的包。您将在 C# 中按如下方式使用此查询:
IList<User> users = session
.GetNamedQuery("LoadUsersAndTransactions")
.SetString("param_1", parameterValue1)
...
.SetString("param_N", parameterValueN)
.List<User>();

关于使用自定义 SQL 查询的 NHibernate 文档是 here .

干杯,
格克。

关于nhibernate - 如何使用 NHibernate 调用从多个表返回结果的过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4623549/

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