首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NHibernate:如何测试多对一关系是懒惰的?

NHibernate:如何测试多对一关系是懒惰的?
EN

Stack Overflow用户
提问于 2010-05-20 19:40:56
回答 1查看 396关注 0票数 1

我有一个简单的多对一关系(订单有一个下订单的客户)。下面是我的订单映射中的except:

代码语言:javascript
运行
AI代码解释
复制
<many-to-one name="Customer" column="FK_CUSTOMERS" class="MyApp.Customer, MyApp" 
not-null="true" lazy="proxy" cascade="none" />

然而,以下内容并未通过:

代码语言:javascript
运行
AI代码解释
复制
configuration.GetClassMapping(typeof(Order))
  .ReferenceablePropertyIterator.FirstOrDefault(p=>p.Name=="Customer")
  .IsLazy
  .ShouldBeTrue();

怎么回事?

EN

回答 1

Stack Overflow用户

发布于 2010-05-20 20:55:12

我正在查看源代码,似乎NH对IsLazy的看法有点怪异。这是2010-01-26的最后一次更改

代码语言:javascript
运行
AI代码解释
复制
get
            {
-               if (propertyValue is ToOne)
-               {
-                   // both many-to-one and one-to-one are represented as a
-                   // Property.  EntityPersister is relying on this value to
-                   // determine "lazy fetch groups" in terms of field-level
-                   // interception.  So we need to make sure that we return
-                   // true here for the case of many-to-one and one-to-one
-                   // with lazy="no-proxy"
-                   //
-                   // * impl note - lazy="no-proxy" currently forces both
-                   // lazy and unwrap to be set to true.  The other case we
-                   // are extremely interested in here is that of lazy="proxy"
-                   // where lazy is set to true, but unwrap is set to false.
-                   // thus we use both here under the assumption that this
-                   // return is really only ever used during persister
-                   // construction to determine the lazy property/field fetch
-                   // groupings.  If that assertion changes then this check
-                   // needs to change as well.  Partially, this is an issue with
-                   // the overloading of the term "lazy" here...
-                   ToOne toOneValue = (ToOne)propertyValue;
-                   return toOneValue.IsLazy && toOneValue.UnwrapProxy;
-               }
+               // NH Specific: Hibernate doesn't make a distinction between
+               // lazy and no-proxy, but NHibernate does. While Hibernate tracks
+               // just whatever a property is lazy, we need to track lazy/no-proxy seperatedly.
+               
                return isLazy;
            }

因此,这取决于您使用的版本,但如果您将此属性映射为noproxy (即.UnwrapProxy)。这给你带来了什么?

代码语言:javascript
运行
AI代码解释
复制
var to1 = configuration.GetClassMapping(typeof(Order))
  .ReferenceablePropertyIterator.FirstOrDefault(p=>p.Name=="Customer")
  .Value as NHibernate.Mapping.ToOne;

to1.IsLazy.ShouldBeTrue();
to1.UnwrapProxy.ShouldBeFalse();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2877216

复制
相关文章
Jenkins与版本控制系统集成
最新教程已在优点知识上线,如需可以【阅读原文】获取。 平台地址: https://youdianzhishi.com/web/course/1013
DevOps云学堂
2020/01/16
1K0
Jenkins与版本控制系统集成
边缘计算如何与企业核心系统集成?
据预测,到2025年,边缘计算市场将以19.9%的复合年增长率增长。目前,许多公司正在企业边缘或家庭部署物联网,因此下一波关注度可能会落在如何从物联网中获取和处理具有商业价值的数据上。
SDNLAB
2020/09/01
7910
系统集成的优势
如果您是企业的管理者,您一定明白任何组织都需要一个能高效运行的系统。与大多数初创公司一样,管理者更倾向于选择各种混合搭配的工具,以避免高昂的成本。这在较短时间内可能是有效的,但随着业务量增长,质量的重要性便逐步置于成本之上。也许在最初,从公司预算角度出发,购买不同的工具似乎是一个好主意,但长远来看,这种策略会给公司带来各种未知的问题。每个工具都需要分配相应的员工去维护更新,这会导致员工效率低下,而且很有可能会对业务产生负面影响。因此,系统集成的重要性显而易见。
知行软件EDI
2020/12/25
2.1K0
系统集成的优势
Netty与传统Server对比
前言 本文旨在介绍传统Socket服务端与NIO服务端的差异. 以餐厅服务员简单举例,每个客人对应一个请求. 传统Socket / OIO 1 public class OioServer { 2 3 @SuppressWarnings("resource") 4 public static void main(String[] args) throws Exception { 5 6 ExecutorService newCachedThreadPool =
用户1216491
2018/01/24
5610
大数据与传统数据
大数据与传统数据相比的主要特点可以概括为:数据量“大”、数据类型“复杂”、数据价值“无限”。
博文视点Broadview
2020/06/11
6190
NIO与传统IO的区别
传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。
全栈程序员站长
2022/07/01
5050
NIO与传统IO的区别
传统IO与NIO比较 顶
admindeMacBook-Pro:~ admin$ telnet 127.0.0.1 10101 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'.
算法之名
2019/09/09
4160
传统IO与NIO比较
                                                                            顶
NIO与传统IO的区别
传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。 小量的线程如何同时为大量连接服务呢,答案就是就绪选择。这就好比到餐厅吃饭,每来一桌客人,都有一个服务员专门为你服务,从你到餐厅到
Java高级架构
2018/07/20
5390
SDN网络与传统网络对比
SDN相比传统网络具有很多优点,比如控制与转发分离,这种思想打破了传统设备供应商的绑定,提高了新业务的部署速度,可以从整个网络层面对流量进行优化等等。在SDN网络中,不管是开发人员还是用户,都可以更多的发挥自己的想象,而不用再受各种RFC的强力约束。 一、传统网络发展及特点 从1969年ARPA NET运行算起,传统网络已经发展了半个世纪,网络按照OSI的模型分成7层,通常所见最多的是二层和三层。二层就是二层交换机构成的网络,在这个网络中交换机学习mac地址和端口的对应关系,通过匹配二
SDNLAB
2018/04/02
7K0
SDN网络与传统网络对比
系统集成模式介绍
在当今的mashup-driven(混搭驱动)的世界中,使用集成来提取、转换和利用数据是大多数软件工程师的首要任务。理解经过验证的集成模式很重要,它可以帮助简化集成过程和流程。
程序你好
2018/09/29
1.6K0
系统集成模式介绍
系统集成概念二
在这种场景下,烟草物流系统产生包含需要提供信息的文件,然后再由相关集成系统来通过访问文件获取信息。集成部分主要作用是将文件根据应用的不同需要做格式的转换。采用文件传输的方式,需要关注文件的格式,考虑到不同应用系统传递消息的具体样式不一致,烟草物流系统应用产生的文件不一定能够给相关集成应用。一些常见的方法是传递XML或者JSON格式的文本,在一些UNIX系统里面也可以通过纯TXT文本传递信息的。
用户10841817
2023/11/14
4970
SpringBoot详细研究-03系统集成
据说杰克船长被黑客盗片了,看来信息安全依然任重而道远,本文以此为引子,来介绍下spring boot对于系统集成方面的支持。 Spring Security提供一套安全框架,通过IOC和AOP来实现
用户1216676
2018/01/24
1.6K0
Hive与传统数据库对比
由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言,再无类似之处。数据库可以用在Online的应用中,但是Hive是为数据仓库而设计的,清楚这一点,有助于从应用角度理解Hive的特性。
用户4870038
2021/02/05
1.8K0
DevOps与传统的融合落地实践
内容来源:2017年5月6日,王津银在“DevOps&SRE 超越传统运维之道”进行《DevOps与传统的融合落地实践》演讲分享。IT大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。 阅读字
IT大咖说
2018/04/03
1.3K0
DevOps与传统的融合落地实践
万事达新购物系统集成增强现实与生物识别技术
国际信用卡组织万事达联合高通等公司推出了一个新的购物系统,并集成了增强现实与生物识别技术来提升其购物体验和安全性。 万事达(Mastercard)联合高通(Qualcomm)和ODG (Osterhout Design Group)公司开发了一种增强现实购物系统,用于其Masterpass(即万事达的数字支付服务)和身份验证系统中。该解决方案使购物者能在真实的环境中查看虚拟物品及信息,并通过生物识别验证进行购买。 正如在拉斯维加斯举行的Money2020大会中所展示的,该系统通过ODG公司设计的智能眼镜进行
人工智能快报
2018/03/15
8480
系统集成相关概念一
所谓系统集成,就是通过结构化的综合对接系统和计算机网络技术,将各个分离的软件、硬件、功能和信息等集成到相互关联的、统一和协调的系统之中,使资源达到充分共享,实现集中、高效、便利的管理。系统集成应采用功能集成、网络集成、软件界面集成等多种集成技术。系统集成实现的关键在于解决系统之间的互连和互操作性问题,它是一个多厂商、多协议和面向各种应用的体系结构。这需要解决各类设备、子系统间的接口、协议、系统平台、应用软件等与子系统、建筑环境、施工配合、组织管理和人员配备相关的一切面向集成的问题。系统集成作为一种新兴的服务方式,是近年来国际信息服务业中发展势头最猛的一个行业。
用户10841817
2023/11/14
4920
系统集成的演变历史
如果你仔细想想,标准和协议在任务完成后就会出现它们本来要简化的东西已经出现了一段时间了,没有两组是用同样的方法来做的。这适用于软件,移动开发如何成为标准化的最近的一个例子,你甚至可以创建一个应用程序,该应用程序将在所有主要的操作系统的工作(这不是很久以前当你必须使用不同的技术对不同型号的设备从同一家公司)。
程序你好
2018/09/29
1.4K0
系统集成的演变历史
传统存储与Fusionstorage的区别?及劣势!
2)Fusionstorage 采用分布式软件机头,可以线性扩展至4096个。准确的说是4096个VBS,而不是必须是4096个节点,因为有些场景一个节点可以有多个VBS。
Ponnie
2021/02/24
2K0
HStreamDB v0.9 发布:分区模型扩展,支持与外部系统集成
v0.9 对之前的分区模型进行了扩展,允许用户直接操作和访问 stream 内部的分区,从而可以对 stream 中的数据分布和分区伸缩进行精细化控制。HStreamDB 采用的是 key-range-based 分区机制,stream 下的所有分区共同划分整个 key space,每个分区归属一段连续的子空间(key range)。若 record 所带 partitionKey 的哈希值落在某个子空间内,那么这条 record 将会被存储在对应的分区中。
EMQ映云科技
2022/08/08
3460
探究 | Elasticsearch 与传统数据库界限
其实拿传统关系型数据库和 Elasticsearch 直接来对比有些牵强,毕竟一个是数据库,一个是搜索引擎。
铭毅天下
2019/12/17
4.2K0

相似问题

云安全与“传统”网络安全有何不同?

65K

人工智能技术架构与传统平台的集成?

022

云安全与“传统”网络安全的不同是什么?

21K

微信小游戏与传统的手机游戏有什么区别?

73.4K

国内Hadoop大数据解决方案与传统的有何优势?

3592
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档