我有一个来自链接服务器的远程表,我需要使用 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 的)。
我还试图找到一种将我的实体映射到存储过程的方法,该存储过程将加载实体(table1)及其子(table2)实体,但找不到明确的方法。大多数涉及使用 hbm 文件,但我不确定如何映射存储过程中的子集合。
谢谢。
为了完整起见,我最终创建了一个包含远程连接的特殊视图,并将此视图在 nhibernate 中映射到不同的模型类。