首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NHibernate:无法成功设置延迟加载

您好!感谢您提供的问答内容。NHibernate是一个.NET平台的对象关系映射(ORM)框架,它允许开发人员将数据库表映射到.NET对象,并提供了各种查询和持久化操作。

关于您提到的“无法成功设置延迟加载”的问题,这可能是因为在NHibernate的配置中没有正确设置延迟加载的相关配置。为了解决这个问题,您可以尝试以下步骤:

  1. 在NHibernate的配置文件中,确保已经启用了延迟加载。您可以在配置文件中添加以下代码来启用延迟加载:
代码语言:csharp
复制
var configuration = new Configuration();
configuration.Proxy(p => p.ProxyFactoryFactory<LazyInitializerFactory>());
  1. 在您的映射类中,确保您使用了lazy="true"属性来标记需要延迟加载的属性。例如:
代码语言:xml<class name="Person">
复制
  <id name="Id">
   <generator class="native" />
  </id>
 <property name="Name" />
  <many-to-one name="Company" class="Company" lazy="true" />
</class>
  1. 在您的代码中,确保您使用了NHibernate的会话(Session)对象来加载需要延迟加载的属性。例如:
代码语言:csharp
复制
var person = session.Load<Person>(1);
var company = session.Load<Company>(person.Company.Id);

如果您仍然遇到问题,请提供更多的代码和配置信息,以便我们能够更好地帮助您解决问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Fluent NHibernate之旅(四)-- 关系(上)

这是我们简单的一个一对一的设计,我们先只要求实现映射,至于其他的比如延迟加载的,稍后说。先跑起来溜溜。...我们的一对一简单映射也说完了,同时也完成了Component的映射,接下来说说延迟加载 一对一延迟加载 细心的朋友一定会发现我们的output出来的Sql语句,使用的是联合查询,但有时对我们来说,只需要...(); 虽然Fluent支持,虽然编译通过,但在创建ISessionFactory的时候,却会抛出异常,因为NHibernate不支持one-to-one的Lazy的特性,也就是说NHibernate不支持一对一的延迟加载...,但结果只是分了2条Sql语句进行的查询,并不是延迟加载,这一点可以通过Sql Server Profiler查看: ?...NHibernate是不支持one-to-one的延迟加载的,我也不知道为什么,但我们可以婉转的进行延迟加载,老赵已经在他的文章“NHibernate中一对一关联的延迟加载”中提出了解决方案,大家可以看一下

1.2K60

NHibernate 缓存

NHibernate 缓存 NHibernate 支持两种级别的缓存, 即一级缓存以及二级缓存。..., 才从数据库加载, 也就是说, Load 方法是延迟加载的。...这些实现都是 2、 配置指定的实体类、集合启用二级缓存缓存 在 hibernate.cfg.xml 文件中添加下面的设置: <class-cache class="HibernateTest.Models.Category...include:可选,默认值为all,当取non-lazy时<em>设置</em><em>延迟</em><em>加载</em>的持久化实例的属性不被缓存。 usage:声明缓存同步策略,就是上面说明的四种缓存策略。...从二级缓存读/写数据 Refresh:向二级缓存写数据,想不从二级缓存读数据,通过在配置文件<em>设置</em> cache.use_minimal_puts从数据库中读取数据时,强制二级缓存刷新 CacheRegion

57911

C# 数据操作系列 - 11 NHibernate 配置和结构介绍

可以设置一个在事务之间的进程级或集群级的二级缓存。 ISession - NHibernate.ISession: 一个单线程、短生命周期的对象,表示从应用程序和数据持久化之间一个连接。...配置项介绍 在上一篇文章中,我们介绍了一下如何设置NHibernate的基本配置项,但是并未对配置项进行深入。...dialect 数据库方言,表示NHibernate连接的数据库是什么,该用哪种格式解析关系映射到数据库SQL语句 default_schema 默认的schema,用来设置连接字符串连接的数据库默认的...max_fetch_depth 最大递归深度,表示一次查询中直接加载的导航属性深度。默认是不直接加载导航属性,基于延迟加载的逻辑,由实际使用时才从数据库中加载数据。...show_sql 是否在控制台中打印转换的SQL语句,一般在调试的过程中会设置为true,用来确认生成的SQL是否正确等。

1.1K20

NHibernate 缓存

, 才从数据库加载, 也就是说, Load 方法是延迟加载的。...NHibernate.Caches.SharedCache NHibernate.Caches.SysCache NHibernate.Caches.SysCache2 NHibernate.Caches.Velocity...这些实现都是 2、 配置指定的实体类、集合启用二级缓存缓存 在 hibernate.cfg.xml 文件中添加下面的设置: <class-cache class="HibernateTest.Models.Category...include:可选,默认值为all,当取non-lazy时<em>设置</em><em>延迟</em><em>加载</em>的持久化实例的属性不被缓存。 usage:声明缓存同步策略,就是上面说明的四种缓存策略。...从二级缓存读/写数据 Refresh:向二级缓存写数据,想不从二级缓存读数据,通过在配置文件<em>设置</em>cache.use_minimal_puts从数据库中读取数据时,强制二级缓存刷新 CacheRegion

42910

Fluent NHibernate之旅(四)-- 关系(中)

Fluent NHibernate之旅系列导航: 一、开篇:ISessionFactory Configuration 二、实体映射:Entity Mapping 三、继承映射:Inheritence...1、一个用户可以拥有多个订单 2、一个订单只能拥有一个用户 对于用户来说,不需要每次都加载订单列表,反之订单可能每次都需要加载用户信息。Let's Go: ?...映射 不得不赞叹一下 Fluent Nhibernate ,有了它,我们的映射一切都变得如此简单,先来看看Model吧,用户的订单列表,对于用户来说,暂时是不需要排序的,所以我们可以使用ISet作为Order...一对多的映射,比起一对一来说还相对的简单点,默认是延迟加载,如果项目中,有些地方,需要立即加载,我们也可以使用 FetchMode.Eager 来加载。...我们在Output中,能看到NHibernate生成的Sql语句,测试也成功,说明我们刚刚是立即加载了Orders属性。

691100

Nhibernate入门与demo

学习和使用Nhibernate已经很久了,一直想写点东西和大家一起学习使用Nhibernate。博客园里也有很多大牛写了很多关于Nhibernate入门的文章。...本篇文章阅读对象是:Nhibernate初学者!如果你是Nhibernate的研究者或者已经很熟练的运用Nhibernate请不吝赐教,对本文不足之处进行指教。      带着问题去学习!...学完这些后,希望你能回答下面几个问题:      1、Nhibernate是什么?      2、Nhibernate能做什么?带给我们的什么?     ...3、怎么搭建Nhibernate?      4、怎么使用Nhibernate?      好,我们就带着这几个问题开始我们的Nhibernate的旅程。    ...设置延迟加载为false。具体可以参考Nhibernate官方文档。 3、一定要将这个文件的属性:生成操作设置为嵌入资源!

32030

C# 数据操作系列 - 12 NHibernate的增删改查

前言 上一篇《C# 数据操作系列 - 11 NHibernate 配置和结构介绍》 介绍了Nhibernate里的配置内容。这一篇将带领大家了解一下如何使用NHIbernate。...不过,有社区爱好者开发了一个名为《Fluent NHibernate》的项目,用来支持NHibernate的流式配置。...,默认情况从Property 中读取 default-lazy:可选的,默认是true,是否启动延迟加载 1.2 class的配置 一般情况下,class节点只需要指定name和table就可以了。...(OS/400) NHibernate.Dialect.DB2400Dialect Firebird NHibernate.Dialect.FirebirdDialect 需要设置driver_class...设置driver_class为NHibernate.Driver.SQLite20Driver Sybase Adaptive Server Anywhere 9 NHibernate.Dialect.SybaseASA9Dialect

1.1K20

NHibernate中对同一个对象的Lazyload要设置一致

NHibernate中出于性能的考虑,经常使用Lazyload的方式来加载关联的对象,关于什么是Lazyload,以及怎么使用,可以参见博客园中的文章,比如:http://www.cnblogs.com...经过研究发现,应该是Task.Node没有被设置为立即加载的原因。...我在调用Flow.Node之前,调用了Task对象,所以NHibernate根据Task的Mapping设置,将Node设置为动态代理类,同时将Node缓存到了Session中,然后再调用Flow.Node...所以要解决这个异常的话,有两个办法,一种是将Task.Node也设置成为立即加载,那么就不会有NodeProxy对象在缓存中。...总的来说,如果在NHibernate中用到了继承类,如果同时用到了Lazyload,那么在转换类型时就可能抛出异常。解决办法就是将Lazyload取消,改为立即加载

30720

NHibernate详解

我们将使用如下的一张User表(假定你已经设置好一个数据库—在的例子里我称它为NHibernate)。...NHibernate 遵循和.Net Framework同样的规则来加载类型。因此如果你在如何指定类型的方面有些混淆,请参看.Net Framework SDK。...你感兴趣于设定uuid.hex和uuid.string(从文档中获取更多信息) 提示:如果你使用Visual Studio.Net 去编译的话,请将user.hbm.xml的Build Action属性设置为...最直接的办法是在你的应用程序的配置文件(App.config)里设置一个NHibernate配置节。配置如下: <?xml version=”1.0″ encoding=”utf-8″ ?...在一个应用程序产品里,在你特定环境里,我推荐配置log4net,并为NHibernate设置一定的日志级别。 你还需要配置hibernate.cfg.xml文件: <?

54730

NHibernate总结

现在的项目中数据访问使用的是NHibernate的一个ORM框架,小弟也是在后期加入项目组,之前对NHibernate就一直没有接触过,所以一直在学习NHibernate,都是一些很基础的一些东西,写出来总结一下...如果你下个系统的学习NHibernate,给大家推荐一个博客,详细的介绍了NHibernate,我也是根据这篇博客学习的。...,其中People实体类中的字段要设置为virtual。每个文件的详细代码在下面介绍 (2)     在NH.Data层引用Nhibernate相关的DLL ?...public virtual int Age { get; set; } public virtual string Sex { get; set; } }  注意:字段的属性一定要设置为...virtual,要不然会报错 (4)     下面我们开始为People实体类进行数据库表映射配置People.hbm.xml NHibernate要知道怎样去加载和存储持久化类的对象。

89440

C#——Nhibernate探索

C#—Nhibernate探索 本篇文章,让我们一起来探索Nhibernate。 首先我们去搜索Nhibernate下载地址,如下链接所示。 该版本可能是最新版,我下载的4.0.4.GA。...该XML文件的属性,要求设置其生成操作为【嵌入的资源】。 但我怕它丢失,还给他设置了始终复制的属性。 XML文件如下: <?xml version="1.0" encoding="utf-8" ?...ISession GetSession() { return _sessionFactory.OpenSession(); } } 因为我们没有显示设置数据库连接字符串...NHibernateSampleFixture(); f.GetCustomerByIdTest(); } } 测试结果是失败,因为,我们还没有在任何地方设置数据库连接字符串...结语 这是一场Nhibernate探索之旅,结果是非常顺利的配置成功了。共耗时2小时。

47330
领券