Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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
C# NHibernate分层主机详细信息查询版本_C#_Nhibernate - Fatal编程技术网

C# NHibernate分层主机详细信息查询版本

C# NHibernate分层主机详细信息查询版本,c#,nhibernate,C#,Nhibernate,嗨,gyus 我在这里写作,所以……我有个问题:-) 以下是我的情况: 表A(类别){ID,List,List} 表B(分类语言){IDCategory,IDLanguage,Description} 表C(子类别){IDCategory,ID,List} 表D(子类别语言){IDSubCategory,IDLanguage,Description} 这里是我的QueryOver(带别名)代码 Category Cat=null; CategoryLanguage catLang=null; 子

嗨,gyus 我在这里写作,所以……我有个问题:-) 以下是我的情况:

表A(类别){ID,List,List} 表B(分类语言){IDCategory,IDLanguage,Description} 表C(子类别){IDCategory,ID,List} 表D(子类别语言){IDSubCategory,IDLanguage,Description}

这里是我的QueryOver(带别名)代码

Category Cat=null;
CategoryLanguage catLang=null;
子类别subCat=null;
子类别语言子类别=空;
var qOver=\u HibSession.QueryOver(()=>Cat)
.Left.JoinAlias(()=>Cat.Languages,()=>catLang)
.Where(()=>catLang.IDLanguage==IDLanguage)
.Left.JoinAlias(()=>类别子类别,()=>子类别)
.Left.JoinAlias(()=>子类别语言,()=>子类别)
.Where(()=>subCatLang.IDLanguage==IDLanguage)
.OrderBy(()=>类别ID).Asc
.List();
通过这个查询,NHibernate不会过滤语言字段,当我循环到子类别中时(在我的视图中打印出树类别=>子类别),它会为每个子类别启动一个查询!!(我使用NHibernate探查器看到了它) 我不使用延迟加载,但使用JoinAlias,我希望看到所有数据都连接起来

有人能帮我吗?
谢谢大家!

不确定它是否有用,但在我使用QueryOver创建的一些查询中,我指定了获取模式,例如

Category Cat = null;
CategoryLanguage catLang = null;
SubCategory subCat = null;
SubCategoryLanguage subCatLang = null;                        

var qOver = _HibSession.QueryOver<Category>(() => Cat)
.Left.JoinAlias(() => Cat.Languages, () => catLang)
.Fetch(x => x.Languages).Eager
    .Where(() => catLang.IDLanguage == IDLanguage)
.Left.JoinAlias(() => Cat.SubCategories, () => subCat)
    .Left.JoinAlias(() => subCat.Languages, () => subCatLang)
.Fetch(x => x.SubCategories).Eager
        .Where(() => subCatLang.IDLanguage == IDLanguage)
.OrderBy(() => Cat.ID).Asc
.List<Category>();
Category Cat=null;
CategoryLanguage catLang=null;
子类别subCat=null;
子类别语言子类别=空;
var qOver=\u HibSession.QueryOver(()=>Cat)
.Left.JoinAlias(()=>Cat.Languages,()=>catLang)
.Fetch(x=>x.Languages)。急切
.Where(()=>catLang.IDLanguage==IDLanguage)
.Left.JoinAlias(()=>类别子类别,()=>子类别)
.Left.JoinAlias(()=>子类别语言,()=>子类别)
.Fetch(x=>x.SubCategories)
.Where(()=>subCatLang.IDLanguage==IDLanguage)
.OrderBy(()=>类别ID).Asc
.List();

我尝试添加提取代码,但结果相同。我无法筛选详细信息表,因此我的对象有多个未筛选的内容。是否可以懒散地加载正确的解决方案?
Category Cat = null;
CategoryLanguage catLang = null;
SubCategory subCat = null;
SubCategoryLanguage subCatLang = null;                        

var qOver = _HibSession.QueryOver<Category>(() => Cat)
.Left.JoinAlias(() => Cat.Languages, () => catLang)
.Fetch(x => x.Languages).Eager
    .Where(() => catLang.IDLanguage == IDLanguage)
.Left.JoinAlias(() => Cat.SubCategories, () => subCat)
    .Left.JoinAlias(() => subCat.Languages, () => subCatLang)
.Fetch(x => x.SubCategories).Eager
        .Where(() => subCatLang.IDLanguage == IDLanguage)
.OrderBy(() => Cat.ID).Asc
.List<Category>();