Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
nHibernate将别名连接到某些字段_Nhibernate - Fatal编程技术网

nHibernate将别名连接到某些字段

nHibernate将别名连接到某些字段,nhibernate,Nhibernate,我在nHibernate中有以下查询,它非常有效 Table1 table1Alias = null; Table2 table2Alias = null; Table3 table3Alias = null; Table4 table4Alias = null; Table5 table5Alias = null; Table6 table6Alias = null; var resultTable = session.QueryOver<Table1>()

我在nHibernate中有以下查询,它非常有效

Table1 table1Alias = null;
Table2 table2Alias = null;
Table3 table3Alias = null;
Table4 table4Alias = null;
Table5 table5Alias = null;
Table6 table6Alias = null;

var resultTable = session.QueryOver<Table1>()
               .JoinAlias(x => x.Table2, () => table2Alias, NHibernate.SqlCommand.JoinType.LeftOuterJoin)
               .JoinAlias(() => table2Alias.Table3, () => itemDesctable3AliasriptionAlias, NHibernate.SqlCommand.JoinType.LeftOuterJoin)
               .JoinAlias(() => table2Alias.Table4, () => table4Alias, NHibernate.SqlCommand.JoinType.LeftOuterJoin)
               .JoinAlias(x => x.Table5, () => table5Alias, NHibernate.SqlCommand.JoinType.LeftOuterJoin)
               .JoinAlias(() => table5Alias.Table6, () => table6Alias, NHibernate.SqlCommand.JoinType.LeftOuterJoin)                                             
               .Where(x => x.Id == inputId)
               .TransformUsing(Transformers.DistinctRootEntity)
               .SingleOrDefault();
Table1 table1Alias=null;
表2表2ALIAS=null;
表3表3Alias=null;
Table4 table4Alias=null;
Table5 table5Alias=null;
表6表6 LIAS=null;
var resultTable=session.QueryOver()
.JoinAlias(x=>x.Table2,()=>table2Alias,NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.JoinAlias(()=>table2Alias.Table3,()=>itemDesctable3AliasriptionAlias,NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.JoinAlias(()=>table2Alias.Table4,()=>table4Alias,NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.JoinAlias(x=>x.Table5,()=>table5Alias,NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.JoinAlias(()=>table5Alias.Table6,()=>table6Alias,NHibernate.SqlCommand.JoinType.LeftOuterJoin)
.Where(x=>x.Id==inputId)
.变压器使用(变压器.距离)
.SingleOrDefault();
问题是,我怀疑我会遇到性能问题,因为 有些表有很多列

问题是,假设我只需要“表5”中的一个字段,但是
表格其余部分的字段,是否必须对所有表格进行手动投影?或者有没有一种方法可以只对一张桌子进行手动投影,而让其余的桌子保持原样?

AFAIK你不能做你想做的事情。您是否测量了性能以查看选择更多列是否会产生差异?好的-我只是想知道这是否可能-感谢您的提醒。此查询只是一个示例,还是您实际上没有选择任何内容或在联接表上使用
WHERE
?如果没有,您可以删除
JOIN
s。否-这不是一个示例,它是删除实体名称的真实代码。我试图加载一个实体并深入加载几个子集合。我建议您进行投影或逐个加载所需的属性/实体,使用Future获得对db的1个调用。但那不是你想要的:)。Mabye LazyProperties能帮上忙吗?