Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/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
C# NHibernate-外部连接,不懒惰,忽略未找到-如何在一条语句中构建对象?_C#_.net_Nhibernate_Orm_Fluent - Fatal编程技术网

C# NHibernate-外部连接,不懒惰,忽略未找到-如何在一条语句中构建对象?

C# NHibernate-外部连接,不懒惰,忽略未找到-如何在一条语句中构建对象?,c#,.net,nhibernate,orm,fluent,C#,.net,Nhibernate,Orm,Fluent,我读过很多关于这方面的帖子,最后一篇是一篇声明,说我正在经历的行为是预期的,如果不是首选的方式 我已经将一些域模型映射到它们的数据库表 我正在使用一个Criteria对象来查询它们 var query = session.CreateCriteria(typeof(Posting)) .CreateAlias("Person", "person", JoinType.InnerJoin).SetFetchMode("Person", FetchMode.Eage

我读过很多关于这方面的帖子,最后一篇是一篇声明,说我正在经历的行为是预期的,如果不是首选的方式

我已经将一些域模型映射到它们的数据库表

我正在使用一个Criteria对象来查询它们

 var query = session.CreateCriteria(typeof(Posting))
                .CreateAlias("Person", "person", JoinType.InnerJoin).SetFetchMode("Person", FetchMode.Eager)
                .CreateAlias("Location", "location", JoinType.InnerJoin).SetFetchMode("Location", FetchMode.Eager)
                .CreateAlias("Post", "post", JoinType.InnerJoin).SetFetchMode("Post", FetchMode.Eager)
                .CreateAlias("post.Zone", "postzone", JoinType.LeftOuterJoin).SetFetchMode("post.Zone", FetchMode.Select)
它产生的正是我想要的状态。我希望它能热切地填充对象(确实如此),并在关系失败的post.Zone中保留空值

在我的映射中,我不得不说not found=ignore(Notfound.ignore()FNH),这是由于外部连接导致NH生成了许多子查询——都在区域表上——这对我来说似乎是不必要的,特别是因为它已经拥有填充区域对象所需的数据

有人能告诉我可以对映射或查询/条件进行哪些更改以将此负载保持在单个查询中吗?或者我是否应该为外部连接到的每个记录期望一个额外的语句

谢谢,
Sam

不幸的是,
未找到=忽略
导致额外选择是一个已知问题。在这两个时间段内(2007年)都有关于此问题的错误报告,目前除了删除
not found=ignore
或更改数据库中的数据以使其不再需要之外,没有已知的解决方法可用


一种可能的解决方法(虽然不是很好的方法)是让存储过程执行所需的查询,然后从NHibernate调用它。这将删除冗余查询

真的吗?因此,实际上无法从实际保存所需数据的初始查询中填充外部联接实体。根数据转换器(不记得类型名)在对象结构正常化方面做得很好,但我能理解为什么不能构建外部连接的记录?是否有另一种获取策略可以立即加载?@sambomartin不幸的是,据我所知,还没有-我们在一些遗留表中遇到了完全相同的问题,到目前为止无法找到解决此问题的好方法。NHibernate bug报告中的最后一个回复说这一切真的很不幸。