gpt4 book ai didi

c# - 扩展 Nhibernate 以在获取或映射中使用 "inner remote join"

转载 作者:太空宇宙 更新时间:2023-11-03 13:35:03 24 4
gpt4 key购买 nike

我有一个来自链接服务器的远程表,我需要使用 Nhibernate 3.3 连接到 SQL Server 2008 R2 中的本地表。

我正在使用 Nhibernate 3.3.1.4000 和 FluenNhibernate 来映射类。如果我使用普通连接,它会工作,但速度很慢(大约 30 秒)。

在 SQL Server Management Studio 中,如果我使用“远程”提示,查询会在不到一秒内返回。

慢查询(30+ 秒)

Select table1.field1, table2.field2 from table1 inner join table2 on table1.id = table2.id

快一(不到1秒)

Select table1.field1, table2.field2 from table1 inner remote join table2 on table1.id = table2.table1_id

在代码中,我使用 nhibernate.linq 获取结果:

session.Query<table1>.FetchMany(x => table2s);

我正在寻找一种方法来强制 nhibernate 使用内部远程连接(我知道它是特定于 sql server 的)。

我还试图找到一种方法将我的实体映射到一个存储过程,该存储过程将加载实体(表 1)及其子(表 2)实体,但找不到明确的方法来做到这一点。大多数涉及使用 hbm 文件,但我不确定如何从存储过程映射子集合。

谢谢。


为了完整起见,我最终创建了一个包含远程连接的特殊 View ,并将该 View 在 nhibernate 中映射到不同的模型类。

最佳答案

我觉得没那么容易。

您可以编写自己的驱动程序,它确实会改变用例的连接子句。

然而 sql query对于这个用例可能会容易得多。我猜您可以在每行中使用多个 .AddEntity() 拥有多个实体,但您必须在代码中对它们进行分组。

关于c# - 扩展 Nhibernate 以在获取或映射中使用 "inner remote join",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18983942/

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