NHibernate是否有时不返回代理对象? - c#

我正在学习Fluent NHibernate(以及扩展的NHibernate)。我正在使用带有一些替代的自动映射,但是我认为这对这个问题并不重要(当然,如果我错了,我会很乐意更新这个问题)。

给定一个ISession(以及更多假定的变量),我可以按其ID返回实体:

using (var session = SessionFactory.OpenSession())
{
    var user = session.Get<User>(userId);
}

我有限的理解是NHibernate围绕User映射实体创建了一个代理,但是当我对其进行测试(based on this)时:

Assert.That(user is INHibernateProxy, "Not a proxy.");

看来我的实例不是代理。

有没有不使用代理的情况?我希望找到“缺失的部分”,并祈祷这不是星期五下午的脑力衰竭。

参考方案

通常,代理用于延迟加载。每当您通过Get等获取权限时,您不会得到代理,而是真正的对象。 NHibernate在不需要时不使用代理。

但是,如果user具有Address,则user.Address is INHibernateProxy将为true(除非为此关系关闭了延迟加载)。

有关NHibernate如何以及何时处理代理的更多信息,请参见this article。

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

如何在Wiremock中为JUNIT匹配精确的json - java

我正在使用Wiremock在Spring启动应用程序中模拟Junit的REST服务。我的问题是,我无法匹配多个匹配模式。 Junit.javaStringValuePattern pattern = WireMock.matching(".*"); givenThat(post(urlEqualTo("/softwares�…

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解统计城市的所有灯泡

这个是我刚毕业的时候,一个真实的面试题,这是一个开放题。题目描述:想办法,将一个城市的所有灯泡数量统计出来。题解:费米估算法1、如果某个城市常驻人口有1000万2、假设每5人居住在一套房里,每套房有灯泡5只,那么住宅灯泡共有1000万只3、假设公众场所每10人共享一只灯泡,那么共有100万只4、主要的这两者相加就得出了1100万只当然实际上这是估算的,具体应…