如何在nhibernate中使用sql查询

如何在nhibernate中使用sql查询,nhibernate,conform,Nhibernate,Conform,如何使用nhibernate ConfORM连接来自不同数据库的两个表,或者至少在nhibernate ConfORM中编写sql查询 这是我需要运行的查询: select RTRIM(l.descr) as affiliation, a.LocationId from Facilities a join [tmt-sam2].sammi.dbo.location l ON a.LocationId = l.off_code+'-'+l.location 谢谢, Alexey如果你没有那么多

如何使用nhibernate ConfORM连接来自不同数据库的两个表,或者至少在nhibernate ConfORM中编写sql查询

这是我需要运行的查询:

select RTRIM(l.descr) as affiliation, a.LocationId
from Facilities a 
join [tmt-sam2].sammi.dbo.location l ON a.LocationId = l.off_code+'-'+l.location
谢谢,
Alexey

如果你没有那么多位置,你可以全部加载

using (var session1 = sessionfactoryDataBase1.OpenSession())
using (var session2 = sessionfactory_tmt_sam2.OpenSession())
{
    var locations = session2.QueryOver<Location>().List();
    var results = session1.QueryOver<Facility>()
        .Where(f => f.LocationId.IsIn(locations.Select(l => l.OffCode + '-' + l.location)))
        .AsEnumerable()
        .Join(locations, f => f.LocationId, l => l.OffCode + '-' + l.location, (f, l) => new { Description = l.descr.TrimEnd(), LocationId = f.LocationId });
}
使用(var session1=sessionfactoryDataBase1.OpenSession())
使用(var session2=sessionfactory\u tmt\u sam2.OpenSession())
{
var locations=session2.QueryOver().List();
var results=session1.QueryOver()
.Where(f=>f.LocationId.IsIn(locations.Select(l=>l.OffCode+'-'+l.location)))
.可计算的()
.Join(locations,f=>f.LocationId,l=>l.OffCode+'-'+l.location,(f,l)=>new{Description=l.descr.TrimEnd(),LocationId=f.LocationId});
}

否则,RDBMS必须支持代码中在多个数据库上运行一个sql的批处理

,只有很少的批处理可以支持。