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

NHibernate ISession Flush:何时何地使用它,为什么?

在云计算领域,NHibernate ISession Flush 是一个重要的概念,它涉及到数据持久化和数据同步的过程。当使用 NHibernate 作为应用程序和数据库之间的抽象层时,ISession 是一个重要的组件,它负责管理数据库的连接和事务。

在 NHibernate 中,当我们进行数据操作时,这些操作会被缓存在 ISession 中,而不是立即同步到数据库中。这样可以提高性能,因为只有在必要时才会将数据同步到数据库中。因此,当我们需要将数据同步到数据库中时,我们需要调用 ISession.Flush() 方法。

ISession.Flush() 方法会将 ISession 中缓存的所有数据操作同步到数据库中。这意味着,在调用 Flush() 方法之前,任何未同步到数据库的数据操作都将被同步到数据库中。这也意味着,在调用 Flush() 方法之后,ISession 中的所有更改都将被提交到数据库中,并且不能再进行任何更改。

因此,当我们需要将数据同步到数据库中时,我们需要考虑何时调用 ISession.Flush() 方法。通常,我们会在以下情况下调用 Flush() 方法:

  1. 当我们需要将数据立即同步到数据库中时,例如,在进行数据查询时,我们需要确保数据已经被同步到数据库中。
  2. 当我们需要将数据操作提交到数据库中时,例如,在进行数据更新或删除时,我们需要确保数据已经被同步到数据库中,以避免数据丢失或不一致。

总之,NHibernate ISession Flush 是一个重要的概念,它可以帮助我们管理数据同步和持久化的过程。我们需要考虑何时调用 Flush() 方法,以确保数据的完整性和一致性。

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

相关·内容

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

ISession - NHibernate.ISession: 一个单线程、短生命周期的对象,表示从应用程序和数据持久化之间一个连接。...它们可能只是一些普通的POCO,仅仅是与ISession中关联起来了。只要ISession关闭了,这些对象就可以被分离出来然后可以在应用层的任意地方使用。...Transient Objects and Collections(临时对象和集合): 表示临时的未被ISession托管的持久化对象,它们被应用层临时创建但直到ISession关闭都不会被持久化。...实例状态 在NHibernate中,一个可持久化的对象有三种不同的状态,依据与持久化上下文之间的关系不同,其中ISession就是一个持久化上下文。...这一节,将带领大家看一下NHibernate中我们常用的配置,因为配置项有很多,但一大部分通常情况都遇不到使用它的时候。

1.1K20

Fluent NHibernate之旅

,废话不说了,下面就介绍Fluent NHibernate,大家也一起来体验一下Fluent Nhibernate的快感吧。...4、灵活的Fluent 一、初识Fluent NHibernate(简称Fluent) Fluent NHibernate offers an alternative to NHibernate's...在NHibernate中,ISession是操作数据的核心,我们需要通过SessionFactory来建造ISession来进行数据的交互。...两者之间都各有长短,或许你还没有体会到Fluent的强大,在日后的Mappings时,你会慢慢了解为什么他会叫Fluent。...当然不,Fluent的开发者不仅帮你保留了原有的方式,还可以混合你的配置文件,最有意思的时,你还可以使用它来学习NHibernate,甚至可以使用它来开发你自己的自动代码生成工具,因为我也刚学,先介绍一些简单的

1K60

Fluent NHibernate之旅二--Entity Mapping

如果你要体验NHibernate的强大,首先你就要学会配置,包括SessionFactory和Mapping的配置。今天跟上一篇一样,会使用传统方式和 NHibernate 进行讲解。...映射的方式很简单吧,相信大家都能看懂吧,为什么会如此方便呢?这其实就是完全靠了Lambda表达式,大家可以看看老赵的“从.NET框架中委托写法的演变谈开去”,就非常清楚了。...对于我这种新手来说,Fluent更适合我,因为我可以用它来进行学习NHibernate。 映射做好了,接下来我们在NHibernate中把映射加到配置中。...public void NHibernateFactory() { var factory = TradSessionFactory.GetCurrentFactory(); using (ISession...前几天的开篇“Fluent NHibernate之旅一”,反响不是很好,或许大家用NHibernate的真的很少,或许我写的不够好,或许。。。。

99090

使用VS2015和Nhibernate实现与MySql数据库连接,实现增删改查操作

本文链接:https://blog.csdn.net/CJB_King/article/details/53456282 准备工具:VS2015(版本不限) ,Nhibernate包,和MySql...先写一个简单的给你定义的数据库中添加一条元素的代码:(不使用Nhibernate的) 前提:先把该用的dll文件,添加到引用里面去不然,会连接不成功,之前下载的Connector/Net(选择.Net&...包来实现一个很简单的对数据增删改查的操作,这一次需要用到我们之前下载的Nhibernate包里面的文件,全部dll文件引入之后,“引用”下面应该是这样的: ?...sessionFactory初始化 private static void InitSeeionFactory() { /*Fluently使用它来识别...sessionFactory; } } //从sessionFactory里面得到session public static ISession

1.4K30

NET中小型企业项目开发框架系列(一个)

当时的前端,我们开发了基于Net一组结构sprint.NET+NHibernate+MVC+WCF+EasyUI等中小型企业级系统开发平台,如今把整个开发过程中的步步进展整理出来和大家分享,这个系列可能有点长...我们的底层开发平台是sprint.NET+NHibernate+MVC+WCF+EasyUI方式开发,顺便加点Spring.net注入的部分,当然我们最基本的关于权限设计、业务设计,而架构。...接下来,就是Dao部分,我们须要非常谨慎的去设计, 首先我们要设计一个用Nhibernate实现的公共父类的CommonSupportDAL类,用它来实现增删改查, <span style="font-family...Object TEntity = this.HibernateTemplate.Save(entity); this.HibernateTemplate.<em>Flush</em>...FlushMode.Auto; this.HibernateTemplate.Update(entity); this.HibernateTemplate.<em>Flush</em>

52910

2022年了有哪些值得推荐的.NET ORM框架?

EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点: 使 .NET 开发人员能够使用 .NET 对象处理数据库。 无需再像通常那样编写大部分数据访问代码。...  NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。...NHibernate社区网站 - https://nhibernate.info GitHub地址:https://github.com/nhibernate/nhibernate-core SmartSql...SmartSql将管理你的 SQL ,并且通过筛选标签来维护本来你在代码层面的各种条件判断,使你的代码更加优美。 主要特点:简洁、高效、高性能、扩展性、监控、渐进式开发!...它在整个转换和执行过程中重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。它极大地帮助开发人员在开发过程中进行上下文切换时简化体验。 开源软件——它是一个开源软件,并且永远是免费的。

5.7K11

2022年了有哪些值得推荐的.NET ORM框架?

EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点: 使 .NET 开发人员能够使用 .NET 对象处理数据库。 无需再像通常那样编写大部分数据访问代码。...  NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。...NHibernate社区网站 - https://nhibernate.info GitHub地址:https://github.com/nhibernate/nhibernate-core SmartSql...SmartSql将管理你的 SQL ,并且通过筛选标签来维护本来你在代码层面的各种条件判断,使你的代码更加优美。 主要特点:简洁、高效、高性能、扩展性、监控、渐进式开发!...它在整个转换和执行过程中重用它们。 动态和混合- 它提供了成熟 ORM 的一些高级功能。它极大地帮助开发人员在开发过程中进行上下文切换时简化体验。 开源软件——它是一个开源软件,并且永远是免费的。

3.8K20
领券